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é.
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 SubTu passes de deux "Ifs" imbriqués à un seul...
Merci pour l'astuce !
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 Subil 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