Programmation VBA avec 3 liste de choix multiples

Bonjour à tous

Mon problème est assez simple mais mon niveau en programmation ne me permet de trouver une solution seul ^^'

Problème: J'aimerais inséré sur ma feuille de travail Excel 3 Formules de ce type :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

If Target.Address = "$G$4" Then

If Target = "Non" Then

Range("G5:G9") = "Ne pas Remplir"

Else

Range("G5:G9") = ""

End If

End If

End Sub

Tout va bien pour la première liste de choix mais je dois complété sur deux autre petits tableaux je dois donc rajouter 2 autre formules comme celle-ci. Or étant débutant sous VBA Excel, je n'arrive pas enchaîner les 3 ordres de programmation (problème de non ambigüe).

Mon But: Je souhaiterais que lorsque l'option voiture est sélectionné dans la cellule C6 les cellule C7 et C8 affiche "Ne pas remplir". Il en va de même pour C16 avec C17 et C18.

Je joins le fichier pour plus de clarté.

34test-02.xlsm (129.27 Ko)

Bonjour,

je n'ai pas le temps de regarder ton fichier pour le moment mais déjà un indice:

Dans tes conditions, tu peux utiliser les combinaisons grâce à des opérateurs And et Or -> cela va grandement simplifier ta tâche et ton code!

Ton exemple réécrit:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Address = "$G$4" And Target = "Non" Then
    Range("G5:G9") = "Ne pas Remplir"
 ElseIf Target.Address = "$G$4" And Target <> "Non" Then
    Range("G5:G9") = ""
 End If
 End Sub

Tu passes de deux "Ifs" imbriqués à un seul...

Merci pour l'astuce ! et donc pour enchainer sur une formule du même style (sur la même feuille), je pourrais faire :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

If Target.Address = "$G$4" And Target = "Non" Then

Range("G5:G9") = "Ne pas Remplir"

Else

Range("G5:G9") = ""

End If

End Sub

And

Private Sub Worksheet_Change (ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

If Target.Address = "$C$6" And Target = "Voiture" Then

Range("C7:C8") = "Ne pas Remplir"

Else

Range("C7:C8") = ""

End If

End Sub

And

Private Sub Worksheet_Change (ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

If Target.Address = "$C$16" And Target = "Voiture" Then

Range("C17:C18") = "Ne pas Remplir"

Else

Range("C17:C18") = ""

End If

End Sub

Lorsque j'exécute la chose sur la feuille une erreur apparait : Nom ambigüe (pour la mention "Private Sub Worksheet_Change (ByVal Target As Range)")

Tu y est presque!

Le problème de ton code est que l'event Worksheet_Change peut être dans le code de la feuille UNE SEULE FOIS.

Tu dois mettre tout ton code dans cet événement. Voici le code correct:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Address = "$G$4" And Target = "Non" Then
 Range("G5:G9") = "Ne pas Remplir"
 Else
 Range("G5:G9") = ""
 End If

  If Target.Address = "$C$6" And Target = "Voiture" Then
 Range("C7:C8") = "Ne pas Remplir"
 Else
 Range("C7:C8") = ""
 End If

  If Target.Address = "$C$16" And Target = "Voiture" Then
 Range("C17:C18") = "Ne pas Remplir"
 Else
 Range("C17:C18") = ""
 End If

 End Sub

il y aurait moyen d'écrire cela en plus court en combinant les adresses de Target mais je le laisse comme ça car ce sera plus lisible pour toi et cela t'aidera à comprendre "le système".

ça marche comme sur des Patin à roulettes ! ^^ merci beaucoup

Rechercher des sujets similaires à "programmation vba liste choix multiples"