Vérification de données dans comboBox non visible

Bonjour,

Mon titre de sujet semble un peu fouillis mais je m'explique.

J'ai crée un userform avec 3 combobox.

Le 1er comboBox (1) contient une liste déroulante avec plusieurs choix (on va dire A ; B; C)
Les 2 autres comboBox (2 et 3) contiennent également des listes (peu importe leur valeur) et sont masqués via la propriété "Visible"

Lorsque A est sélectionné dans le comboBox 1, le comboBox2 s'affiche (Et le comboBox3 reste caché)
Lorsque B est sélectionné dans le comboBox 1, le comboBox3 s'affiche (Et le comboBox2 est, ou reste, caché)
Lorsque C est sélectionné dans le comboBox 1, les comboBox 2 et 3 sont cachés

Cela fonctionne très bien.

Mais avant de continuer la macro je souhaiterais vérifier que les comboBox visibles soient bien remplies.

Mon code aujourd'hui ressemble a quelque chose comme ca :

If comboBox1 <> "" And comboBox2 <> "" And comboBox3 <> "" Then

"execution de la suite de la macro"

Else

MsgBox ("Veuillez remplir tous les champs de données")
Exit Sub
End If

Mais en faisant cela il vérifie évidement les comboBox 2 et 3 qu'elles soient visibles ou non.

Je souhaiterais vérifier uniquement celles qui sont visibles selon le choix du comboBox1

Est ce que cela est possible?

Littéralement, je pensais écrire le code ci dessous mais je n'arrive pas à le retranscrire :

Si combobox1 est rempli
OU
si combobox1 = B et ComboBox 2 est rempli
OU
si combobox1 = C et ComboBox3 est rempli

La solution est peut être toute simple mais je bloque dessus

Note : Les comboBox doivent apparaitre vides pour forcer à l'utilisateur de choisir dans les listes.

Merci par avance pour votre aide! 🙏

Bonjour

J'aime pas trop masquer les objets sur les USF on finit pas s'y perdre et c'est moins facile à gérer. Pourquoi ne pas utiliser la propriété ENABLED en lieu et place

Sans voir le fichier ou la macro complète pourquoi ne faites-vous pas un contrôle sur la valeur de la combo1

Une idée

Select Case ComboBox1.Value
    Case Is = "A"
        If ComboBox2 = vbNullString Then
            MsgBox "veuillez remplir la combo2"
            exit sub
        End If

    Case Is = "B"
        If ComboBox3 = vbNullString Then
            MsgBox "veuillez remplir la combo3"
            exit sub
        End If

    Case Is = "C"
End Select
'continuer la macro

Crdlt

Bonjour, Il y a un truc qui me chiffonne,

De quelle manière est alimenté le contenu des combobox 2 et 3 ? par une selection manuelle ?

Si oui dans ce cas je ne vois pas bien comment vérifier par exemple :

"Lorsque B est sélectionné dans le comboBox 1 :

le comboBox3 s'affiche (Et le comboBox2 est, ou reste, caché)"

A ce moment là combo 3 s'affiche mais la sélection d'une option de la liste n'est pas encore faite

Merci pour vos réponses.

@Xmenpl
Les comboBox 2 et 3 contiennent des listes, leur valeur est sélectionnée dans la liste après qu'elles soient affichées.

@Dan,
En effet l'option "Enabled" est mieux et permet de savoir que les choix peuvent être possibles sans pour autant s'en servir selon les cas mais sa valeur est aussi vérifiée avec mon précédent code.

Merci pour ton code mais j'ai finalement trouvé une combine grâce à "Enabled".
Lorsque comboxBox1 = A; ComboBox2 s'affiche en grisé (non sélectionnable donc) avec le texte "Non applicable", ainsi il y a une valeur de saisie qui ne peut pas être modifiée dans le cas "A".
ComboBox2 ayant une valeur, mon code fonctionne.

Si comboxBox1 = B, ComboBox2 redevient sélectionnable et la valeur "Non applicable" est effacée pour laisser place à la liste de choix.
Ca fonctionne nickel 👍

Merci et bon week end à vous !

Ok. Merci du retour

Pensez à cloturer fil

Cordialement

Rechercher des sujets similaires à "verification donnees combobox visible"