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 Then

il 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 Function

Dans 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 If

Bonjour 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

Rechercher des sujets similaires à "condition option button"