Liste déroulante en fonction d'une variable

  • Initiateur de la discussion Initiateur de la discussion dealise
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dealise

Guest
Bonjour,

Je rencontre un problème pour faire une liste déroulante en fonction d'une variable en VBA.
Je m'explique : je voudrais que si l'utilisateur change une cellule la bonne liste déroulante s'affiche en face.
Pour cela j'ai écrit une macro evenementielle :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Integer


If Target.Column = 2 And (Target.Row > 16) Then
a = Target.Row
Range("C" & a).Select
catego = Range("B" & a)

Application.WindowState = xlMaximized
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=catego"
MsgBox catego



.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

End If

End Sub



Je vous join mon fichier Excel, pour que vous puissiez voir comment j'ai défini mes plage de donnée et comment je leur est donnée des noms.

je suis débutante en VBA, et je ne vois vraiment pas mon erreurs, car si je met "Loisir" a la place de Catego j'obtiens bien la bonne liste déroulante...


merci beaucoup d'avance pour votre aide !!!
 

Pièces jointes

Re : Liste déroulante en fonction d'une variable

Bonjour,

tout d'abord, fais bien attention à tes noms définis, ils doivent être "STRICTEMENT" identiques à tes noms de la liste "catégorie"

Par exemple, "Sante" et non "Santé", ou encore "High", et non "High-tech"....

Ensuite, essaie ce code :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target <> "" Then
    If Target.Column = 2 And Target.Row > 16 Then
        With Target.Offset(, 1).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=" & Target
        End With
    End If
End If
End Sub

Bon courage
 
Re : Liste déroulante en fonction d'une variable

Effectivement sa marche !!!!!

Merci beaucoup pour l'aide aussi précise et rapide !
Je suis toujours épaté par la rapidité et l'efficacité des réponses sur ce forum !

Merci encore pour ton aide!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour