Activer un userform en fonction d'une liste de validation de données

Bonjour à tous !

Voilà, je suis tout nouveau sur ce forum que je découvre en même temps que je découvre VBA (expérience d'une semaine environ).

Pour contextualiser : j'ai créer un classeur excel avec deux feuilles, une "base de données" (feuil2) et une feuille de recherche (Feuil1). Mon but, lorsque j'insère dans une cellule précise la valeur "Exception" à l'aide d'une liste déroulante (validation des données), un userform s'ouvre avec 3 cases à cocher. Ces cases cochées permettent ensuite d'extraire un chiffre total suivant si elles sont cochées ou pas.

Donc je viens poster sur ce forum car j'ai plusieurs petits soucis :

- Le premier, lorsque j'insère la valeur "Exception" dans la cellule où se trouve la liste déroulante, mon userform s'ouvre convenablement, cependant lorsque je clique sur les cases à cocher, un message d'erreur 400 s'affiche. Après plusieurs recherches sur ce forum, je n'ai pas encore trouvé la solution.

-Le second soucis, lorsque la valeur exception est indiqué, le userform s'ouvre à chaque fois que j'effectue une action sur la feuille, j'aimerais que celui se déclenche seulement lorsque je sélectionne la cellule concernée.

Etant un novice, il est possible que ce classeur soit améliorable, si vous avez des pistes, je suis preneur.

Je vous joint le fichier pour que se soit plus explicite.

Par avance merci pour votre temps et vos réponses !

281er-essai.xlsm (21.05 Ko)

bonjour,

lorsqu'on modifie une cellule de la feuille Feuil1, la procédure événementielle Private Sub Worksheet_Change(ByVal Target As Range) de la feuille Feuil1 se déclenche.

Dans l'userform un clic sur les checkbox va écrire dans la feuille Feuil1 ... et donc déclencher la procédure événementielle qui ouvre l'userform qui est déjà actif.

Il faut donc limiter les cellules "sensibles" dans la procédure événementielle :

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address <> Range("E7").Address Then Exit Sub 'si on ne modifie pas la cellule d'adresse E7, on quitte
 If Target.Value = "Exception" Then USF_ColE.Show 'si on n'a pas quitté donc cellule E7, on lance l'usf si "Exception"
End Sub

A+

Merci beaucoup pour votre réponse et votre rapidité !

J'ai pu voir où était mon erreur grâce à votre explication.

A une prochaine fois peut être

Rechercher des sujets similaires à "activer userform fonction liste validation donnees"