Condition et option button
Bonjour
J ai une userform avec plusieurs frames et optionbutton, tout fonctionne bien mais j' ai voulu ajouté une condition comprenant plusieurs optionbutton qui se trouve dans des frames différentes pour afficher un message d ' erreur mais je ne comprends pas cela ne fonctionne pas…..C est la dernière condition.. merci d' avance pour votre aide
Private Sub CommandButton2_Click()
'**************************** VALIDATION DES DONNEES SAISIES **************************************
'on v?rifie que les champs texte sont remplis
If TextNom.Value = "" Then
MsgBox ("Il faut indiquer un nom!")
Exit Sub 'interrompt la macro de validation, le userform reste affich? en l'?tat pour correction
End If
If TextLargeur.Value = "" Then
MsgBox ("Il faut indiquer la largeur")
Exit Sub 'interrompt la macro de validation, le userform reste affich? en l'?tat pour correction
End If
If Texthauteur.Value = "" Then
MsgBox ("Il faut indiquer la hauteur")
Exit Sub 'interrompt la macro de validation, le userform reste affich? en l'?tat pour correction
End If
If Textquantite.Value = "" Then
MsgBox ("Il faut indiquer la quantit?")
Exit Sub 'interrompt la macro de validation, le userform reste affich? en l'?tat pour correction
End If
'on v?rifie qu'au moins une m?thode de pose a ?t? choisi
If OptionButton1 = False And OptionButton2 = False Then
MsgBox ("indiquer le mode de pose")
Exit Sub
Else
End If
'on v?rifie si il y a une all?ge a ?t? choisi
If OptionButton3 = False And OptionButton4 = False Then
MsgBox ("indiquer si il y a une all?ge")
Exit Sub
Else
End If
'on v?rifie qu'au moins une hauteur de lame a ?t? choisi
If OptionButton8 = False And OptionButton9 = False Then
MsgBox ("indiquer une hauteur de lame ")
Exit Sub
Else
End If
'on v?rifie qu'au moins une largeur de coulisse a ?t? choisi
If OptionButton12 = False And OptionButton13 = False Then
MsgBox ("indiquer une largeur de coulisse")
Exit Sub
Else
End If
'on v?rifie qu'au moins une hauteur de caisson a ?t? choisi
If OptionButton14 = False And OptionButton15 = False And OptionButton16 = False Then
MsgBox ("indiquer une hauteur de caisson")
Exit Sub
Else
End If
'on v?rifie s'il y a un moteur
If OptionButton10 = False And OptionButton35 = True Then
MsgBox ("Indiquez s'il y a un moteur.")
Exit Sub
Else
End If
'on v?rifie qu'au moins un diametre d axe a ?t? choisi
If OptionButton32 = False And OptionButton33 = False And OptionButton34 = False Then
MsgBox ("indiquer une hauteur de caisson")
Exit Sub
Else
End If
'on v?rifie si le sens de la manivelle a ?t? choisi
If OptionButton17 = False And OptionButton18 = False And OptionButton19 = False And OptionButton20 = False Then
MsgBox ("Indiquez le sens de la manivelle")
Exit Sub
Else
End If
'on verifie que l'axe de 80 n'a pas ?te choisi si c est un volet manuel avec un caisson de 250 ou 300"
If OptionButton10 = True And OptionButton16 = True And OptionButton26 = True And OptionButton34 = True Then
MsgBox ("Pas possible de mettre une axe de 80 dans volet manuel avec caisson de 250 ou 300 - changer de diametre d' axe")
Exit Sub
Bonjour,
Seule la dernière condition ne fonctionne pas ou le code ne fonctionne plus ?
le code proposé est-il le reflet exact du contenu de Private Sub CommandButton2_Click() ?
si oui : il manque un End If à la dernière condition et le End Sub de fin de Sub
si non : ????
Par ailleurs tous les Else peuvent être supprimés puisqu'inutiles .
Le classeur sans données confidentielles serait un plus pour le diagnostic.
A+
Bonjour
Merci beaucoup pour votre réponse mais je n' y arrive pas….
Ci joint mon classeur et je voudrais que ce message s ' affiche pour commandebutton1 et commandebutton2
'on verifie que l'axe de 80 n'a pas ete choisi si c est un volet manuel avec un caisson de 250 ou 300"
If OptionButton10 = True And OptionButton16 = True And OptionButton26 = True And OptionButton34 = True Then
MsgBox ("Pas possible de mettre une axe de 80 dans volet manuel avec caisson de 250 ou 300 - changer de diametre d' axe")
Merci beaucoup
Bonjour,
Essai avec ceci :
If OptionButton10 = True And (OptionButton16 = True Or OptionButton26 = True) And OptionButton34 = True Thenil te faut mettre entre parenthèses les boutons qui concernent le caisson puisque c'est soit l'un soit l'autre et l'opérateur doit être OU et pas ET !
Re,
A ta place, je sortirai la procédure de contrôle de celle du bouton en en faisant une fonction par exemple !
Ici c'est une fonction "Controle" à laquelle on passe un argument de type String par référence (le message qui doit être afficher) et la fonction retourne Vrai si tous les tests sont réussis sinon faux et affiche le message correspondant qui lui a été modifié dans la fonction :
Function Controle(Message As String) As Boolean
'interrompt la macro de validation, le userform reste affiché en l'état pour correction
If TextNom.Value = "" Then Message = "Il faut indiquer un nom !": Controle = False: Exit Function
'interrompt la macro de validation, le userform reste affiché en l'état pour correction
If TextLargeur.Value = "" Then Message = "Il faut indiquer la largeur": Controle = False: Exit Function
'interrompt la macro de validation, le userform reste affiché en l'état pour correction
If Texthauteur.Value = "" Then Message = "Il faut indiquer la hauteur": Controle = False: Exit Function
'interrompt la macro de validation, le userform reste affiché en l'état pour correction
If Textquantite.Value = "" Then Message = "Il faut indiquer la quantité": Controle = False: Exit Function
'on vérifie qu'au moins une méthode de pose a été choisi
If OptionButton1 = False And OptionButton2 = False Then Message = "indiquer le mode de pose": Controle = False: Exit Function
'on vérifie si il y a une allége a été choisi
If OptionButton3 = False And OptionButton4 = False Then Message = "indiquer si il y a une allége": Controle = False: Exit Function
'on vérifie qu'au moins une hauteur de lame a été choisi
If OptionButton8 = False And OptionButton9 = False Then Message = "indiquer une hauteur de lame ": Controle = False: Exit Function
'on vérifie qu'au moins une largeur de coulisse a été choisi
If OptionButton28 = False And OptionButton29 = False And OptionButton30 = False And OptionButton31 = False Then Message = "indiquer une largeur de coulisse": Controle = False: Exit Function
'on vérifie qu'au moins une hauteur de caisson a été choisi
If OptionButton14 = False And OptionButton15 = False And OptionButton16 = False And OptionButton26 = False Then Message = "indiquer une hauteur de caisson": Controle = False: Exit Function
'on vérifie qu'au moins une diametre d'axe a été choisi
If OptionButton32 = False And OptionButton33 = False And OptionButton34 = False Then Message = "indiquer un diamétre d axe": Controle = False: Exit Function
'on vérifie s'il y a un moteur
If OptionButton10 = False And OptionButton35 = False Then Message = "Indiquez s'il y a un moteur.": Controle = False: Exit Function
'on vérifie si le sens de la manivelle a été choisi
If OptionButton17 = False And OptionButton18 = False And OptionButton19 = False And OptionButton20 = False Then Message = "Indiquez le sens de la manivelle": Controle = False: Exit Function
'on verifie que l'axe de 80 n'a pas ?te choisi si c est un volet manuel avec un caisson de 250 ou 300"
If OptionButton10 = True And (OptionButton16 = True Or OptionButton26 = True) And OptionButton34 = True Then Message = "Pas possible de mettre une axe de 80 dans volet manuel avec caisson de 250 ou 300 - changer de diametre d' axe": Controle = False: Exit Function
'arrivé ici tout est bon donc retourne Vrai !
Controle = True
End FunctionDans la procédure de ton bouton, tu l'appelles de cette façon :
Dim Message As String
If Controle(Message) = False Then
MsgBox Message
Exit Sub
End IfBonjour These
Merci beaucoup cela fonctionne … Par contre dans ma Frame "caisson" quand je choisis 250 et que je veux changer par 205 et bien le bouton 250 reste coché? j ai regardé dans les propriétés du bouton dans "tabIndex" il est noté 2
Je ne vois pas où est le problème...
Merci d' avance
Bon Week-end
Bonjour,
J'ai aussi remarqué ça, il suffit de supprimer ce bouton et d'en re créer un autre en lui donnant le nom du précédent !
Bonjour
Ok ca marche
Merci beaucoup