mettre le fond des frames en rouge si toute les combobox vide
Dernière réponse : dans Programmation
bonjour à vous tous
pouvez vous m'aider à résoudre mon petit probléme
dés l'ouverture de mon userform1 je voudrais que le programme
méttre en rouge le fond des trois frame si un des combobox de l'userform1
est vide .
puis si les combobox sont tous remplis alors mettre les trois frame de couleur
vert
merci
pouvez vous m'aider à résoudre mon petit probléme
dés l'ouverture de mon userform1 je voudrais que le programme
méttre en rouge le fond des trois frame si un des combobox de l'userform1
est vide .
puis si les combobox sont tous remplis alors mettre les trois frame de couleur
vert
Private Sub UserForm_Initialize()
Dim ctrl As Control
For Each ctrl In Me.Controls
'je recherche que les controles de type combobox
If TypeOf ctrl Is ComboBox Then
'si le controle est vide alors je sors de la boucle
'et j'empeche la fermeture de la form
If ctrl.Text = "" Then
Cancel = 1
' mettre les trois frame de l'userform1 en couleur rouge
UserForm1.Frame1.BackColor = &HFF&
UserForm1.Frame2.BackColor = &HFF&
UserForm1.Frame3.BackColor = &HFF&
Exit Sub
End If
End If
Next ctrl
End Sub
merci
Autres pages sur : mettre fond frames rouge combobox vide
Lassé par la pub ? Créez un compte
Beurk, c'est pô bô !!!
Regarde comme c'est bô, une fois correctement indenté :
Je ne vois pas où est le problème dans ce code, à part ça.
En fait, je te propose de raisonner autrement :
Détecter si tous sont remplis ou pas
Si tous sont remplis, mettre en Vert, sinon, mettre en Rouge
Au lieu de mettre ça dans UserForm_Initialize, crée toi une fonction SontTousRemplis qui renvoie un booléen, et une procédure Coloriage qui colore soit en rouge soit, en vert en fonction de SontTousRemplis . Ensuite, appelle Coloriage dans UserFor_Initialise et dans tes ComboBoxN_Change. (Tu peux changer le nom des fonctions
)
Regarde comme c'est bô, une fois correctement indenté :
Private Sub UserForm_Initialize()
Dim ctrl As Control
For Each ctrl In Me.Controls
' // je recherche que les controles de type combobox
If TypeOf ctrl Is ComboBox Then
' // si le controle est vide alors je sors de la boucle
' // et j'empeche la fermeture de la form
If ctrl.Text = "" Then
Cancel = 1
' // mettre les trois frame de l'userform1 en couleur rouge
UserForm1.Frame1.BackColor = &HFF&
UserForm1.Frame2.BackColor = &HFF&
UserForm1.Frame3.BackColor = &HFF&
Exit Sub
End If
End If
Next ctrl
End Sub
Je ne vois pas où est le problème dans ce code, à part ça.
En fait, je te propose de raisonner autrement :
Au lieu de mettre ça dans UserForm_Initialize, crée toi une fonction SontTousRemplis qui renvoie un booléen, et une procédure Coloriage qui colore soit en rouge soit, en vert en fonction de SontTousRemplis . Ensuite, appelle Coloriage dans UserFor_Initialise et dans tes ComboBoxN_Change. (Tu peux changer le nom des fonctions
)Citation :
Beurk, c'est pô bô !!!Regarde comme c'est bô, une fois correctement indenté :
Private Sub UserForm_Initialize()
Dim ctrl As Control
For Each ctrl In Me.Controls
' // je recherche que les controles de type combobox
If TypeOf ctrl Is ComboBox Then
' // si le controle est vide alors je sors de la boucle
' // et j'empeche la fermeture de la form
If ctrl.Text = "" Then
Cancel = 1
' // mettre les trois frame de l'userform1 en couleur rouge
UserForm1.Frame1.BackColor = &HFF&
UserForm1.Frame2.BackColor = &HFF&
UserForm1.Frame3.BackColor = &HFF&
Exit Sub
End If
End If
Next ctrl
End Sub
Je ne vois pas où est le problème dans ce code, à part ça.
En fait, je te propose de raisonner autrement :
Au lieu de mettre ça dans UserForm_Initialize, crée toi une fonction SontTousRemplis qui renvoie un booléen, et une procédure Coloriage qui colore soit en rouge soit, en vert en fonction de SontTousRemplis . Ensuite, appelle Coloriage dans UserFor_Initialise et dans tes ComboBoxN_Change. (Tu peux changer le nom des fonctions
)bonjour et merci de m'avoir répondu
je n'arrive pas à trouver la solution
mais j'ai une idée
je souhaiterais que lorsque les céllules a6 jusqu'a a10 sont remplie dans un tableau qui se trouve sur la feuil1 du classeur
que les trois frames de l'userform1 deviennent de couleur vert sinon rouge lorsque une des céllule sont non rempli
merci zeb
je continu à chercher avec ce que tu m'as proposer avant
Après quelques tests chez moi, cela fonctionne par contre :
- Qu'est ce que représente ta variable Cancel ?
Si tu veux mettre en rouge pas besoin de se compliquer la vie en VBA les couleurs se code en base 10.
Inutile de préciser le formulaire ou tu met Me à la place.
le .text derrière ctrl est inutile le mieux c'est encore de rien préciser
- Qu'est ce que représente ta variable Cancel ?
Si tu veux mettre en rouge pas besoin de se compliquer la vie en VBA les couleurs se code en base 10.
Inutile de préciser le formulaire ou tu met Me à la place.
Frame1.BackColor = 255 ' rouge vif
Frame2.BackColor = 255
Frame3.BackColor = 230 ' rouge plus zen
le .text derrière ctrl est inutile le mieux c'est encore de rien préciser
Private Sub UserForm_Initialize()
Dim ctrl As Control
For Each ctrl In Me.Controls
' // je recherche que les controles de type combobox
If TypeOf ctrl Is ComboBox Then
' // si le controle est vide alors je sors de la boucle
' // et j'empeche la fermeture de la form
If ctrl = "" Then
'Cancel = 1
' // mettre les trois frame de l'userform1 en couleur rouge
Frame1.BackColor = 255
Frame2.BackColor = 255
Frame3.BackColor = 230
Exit Sub
End If
End If
Next ctrl
End Sub
novice_33 a dit :
Après quelques tests chez moi, cela fonctionne par contre : - Qu'est ce que représente ta variable Cancel ?
Si tu veux mettre en rouge pas besoin de se compliquer la vie en VBA les couleurs se code en base 10.
Inutile de préciser le formulaire ou tu met Me à la place.
Frame1.BackColor = 255 ' rouge vif
Frame2.BackColor = 255
Frame3.BackColor = 230 ' rouge plus zen
le .text derrière ctrl est inutile le mieux c'est encore de rien préciser
Private Sub UserForm_Initialize()
Dim ctrl As Control
For Each ctrl In Me.Controls
' // je recherche que les controles de type combobox
If TypeOf ctrl Is ComboBox Then
' // si le controle est vide alors je sors de la boucle
' // et j'empeche la fermeture de la form
If ctrl = "" Then
'Cancel = 1
' // mettre les trois frame de l'userform1 en couleur rouge
Frame1.BackColor = 255
Frame2.BackColor = 255
Frame3.BackColor = 230
Exit Sub
End If
End If
Next ctrl
End Sub
bonjour freeman23
merci de bien vouloir résoudre mes probléme tous comme zeb
en fait je cherche à controler tous les combobox de l'userform2 s'il sont vide ou non
alors s'il sont vide impossible de fermer l'userform un message apparait
puis si les combobox sont tous plein alors userform3 ce ferme et apparait
userform1 avec les trois frames ,ainsi comme on a compléter tous les combobox "de userform2"
de cherche à mettre en vert les 3 frames .
mais dans userform3 j'ai un deuxiéme bouton qui sert à fermer userform3 lorsque les combobox ne sont
pas complet donc la je cherche a mettre en rouge les trois frames .
pour mettre en vert lorsque les combobox sont plein ok ca marche
mais pour mettre en rouge lorsque les combobox sont vide je n'arrive pas avec le 2éme bouton.
peux tu m'aider à trouver la solution
a++++
Citation :
Citation :
En fait, je te propose de raisonner autrement :Ca ne te convient pas ?
salut merci pour ta réponse
voici ce que j'ai fais depuis
Private Sub UserForm_Activate()
If range("k6") = "" Then
Frame1.BackColor = &HFF& 'rouge
Frame2.BackColor = &HFF& 'rouge
Frame3.BackColor = &HFF& 'rouge
Else
Frame1.BackColor = &HFF00& 'vert
Frame2.BackColor = &HFF00& 'vert
Frame3.BackColor = &HFF00& 'vert
End If
End Sub
ca fonctionne bien avec k6 mais moi je souhaite controler de k6 à ai6
et ca marche pas si j'écrit
Private Sub UserForm_Activate()
If range("k6:ai6") = "" Then
Frame1.BackColor = &HFF& 'rouge
Frame2.BackColor = &HFF& 'rouge
Frame3.BackColor = &HFF& 'rouge
Else
Frame1.BackColor = &HFF00& 'vert
Frame2.BackColor = &HFF00& 'vert
Frame3.BackColor = &HFF00& 'vert
End If
End Sub
mystére ??????????
merci zeb
Tu ne peux pas tester la valeur de n cellule en même temps. Donc tu dois faire une boucle spéciale pour le tester.
Cette fonction renvoie vrai ssi toutes les cellules de la plage k6 à ai6 sont remplies.
Public function EstRemplie() as boolean
Dim i as long
Estremplie = true
for i = 11 to 35 ' de k à ai
if cells(6,i) = "" then
Estremplie = false ' merci zeb
Exit for
end if
next
end function
Cette fonction renvoie vrai ssi toutes les cellules de la plage k6 à ai6 sont remplies.
salut freeman et zeb
tu as entiérement raison zeb la meilleur facon d'apprendre est de mettre le nez dedans .j'avais trouvé t'as facon de faire mais je la trouvait trop longue.je comprend mieux à présent pourquoi tu me proposait d'utiliser boolean.
merci pour tous vos conseil freeman et zeb
à bientôt
tu as entiérement raison zeb la meilleur facon d'apprendre est de mettre le nez dedans .j'avais trouvé t'as facon de faire mais je la trouvait trop longue.je comprend mieux à présent pourquoi tu me proposait d'utiliser boolean.
merci pour tous vos conseil freeman et zeb
à bientôt
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumComment mettre fond d ecran sur windows
- ForumComment mettre fond ã cran windows 7
- ForumImpossible de mettre fond d'ã cran
- ForumMettre un fond sur excel
- ForumComment mettre fond d'ã cran dual screen
- ForumComment mettre le fond de la console uxterm en transparent
- articlesMettre un fond d'écran sur netbook
- articlesMettre un fond d'ã cran sur netbook
- ForumMettre fond d'ecran dans un dossier
- ForumMettre un fond ecran windows 7
- Voir plus
)