VBA > menu déroulant

  • Initiateur de la discussion Initiateur de la discussion mathilde_RI
  • 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 !

M

mathilde_RI

Guest
Bonjour,

Je souhaiterais mettre en place un doc avec des listes déroulantes. (je sais qu'il en existe plusieurs sortes donc je précise que moi j'utilise celles que l'on trouve dans le menu d'Excel en allant dans Données > validation de données > autorisé> liste)

La macro que je souhaite faire dit que :
Si dans ma liste principale je sélectionne "1" alors les autres listes (on pourrait les appeler "sous liste") doivent afficher seulement les 3 premières données, si on sélectionne "2" dans la liste principale alors il faut afficher les 3 suivantes dans les sous liste.

Je joints un fichier Excel pour clarifier ce que je cherche à faire.

Merci pour votre aide! 🙂

Bonne journée

Mathilde
 

Pièces jointes

Re : VBA > menu déroulant

Bonjour Mathilde, bonjour le forum,

Pas très clair (pour moi en tous cas...) ! Si tu mets 1 Ok. Mais si tu mets 2, les 3 suivantes ça signifie quoi :
• C3:C5 ? Dans ce cas C7 et C8 ne seront jamais affichées dans la liste
• C5:C7 ? Dans ce cas la troisième sous-liste n'affichera rien si tu mets 3 dans la pricipale.
Regarde ci le code ci-dessous convient, sinon explique-nous mieux...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim li As Byte 'décalre la variable li (LIgne)

If Target.Address <> "$C$3" Then Exit Sub 'si le changement a lieu ailleurs qu'en C3, sort de la procédure
li = CByte(Target.Value) 'définit la ligne li
With Sheets("Feuil2") 'prend en compe l'onglet "Feuil2"
    .Range(.Cells(li + 1, 3), .Cells(li + 1, 3).Offset(2, 0)).Name = "plage1" 'définit la plagge nommé pl1 en fonction de li
    .Range(.Cells(li + 1, 4), .Cells(li + 1, 4).Offset(2, 0)).Name = "plage2" 'définit la plagge nommé pl2 en fonction de li
    .Range(.Cells(li + 1, 5), .Cells(li + 1, 5).Offset(3, 0)).Name = "plage3" 'définit la plagge nommé pl3 en fonction de li
End With 'fin de la prise e compte de l'onglet "Feuil2"
With Range("B6").Validation 'prend e compte la validation de données en B6
    .Delete 'supprime
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=plage1" 'actualise en fonction de li
End With 'fin de prise en compte de ...
With Range("C6").Validation 'prend e compte la validation de données en C6
    .Delete 'supprime
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=plage2" 'actualise en fonction de li
End With 'fin de prise en compte de ...
With Range("D6").Validation 'prend e compte la validation de données en D6
    .Delete 'supprime
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=plage3" 'actualise en fonction de li
End With 'fin de prise en compte de ...
End Sub


[Édition]
Bonjour Pierrot on s'est croisé...

Le fichier :

 

Pièces jointes

Re : VBA > menu déroulant

Oui c'est vrai que je n'ai pas été très précise dans mes explications. Je n'ai pas donné toutes les possibilités mais toutes les listes seront utilisées dans le vrai fichier, je voulais juste ici donner un exemple.

Merci pour vos réponses rapides.
Robert, le résultat est exactement ce que je cherchais à faire. Je vais maintenant étudier ça de plus près!

Merci encore et bonne journée.
Mathilde
 
Re : VBA > menu déroulant

Bonjour c'est encore moi!
Je viens vous revoir après beaucoup de recherche en vain...

Je vais tout compte fait travailler avec les combobox via Développeur > insertion >etc
Y a t-il des modifications à apporter dans le code ci-dessus? Il n'a pas l'air de fonctionner dans mon fichier: Il faut l'insérer dans une feuille module, dans la feuille en question (comme "Feuil1") ou dans "ThisWorkbook"?

Autre chose, connaissez-vous une aide vba assez complète sur les listes déroulantes en général?
Car j'ai cherché, on trouve beaucoup de choses sur les forum mais très peu de tutorat.

Merci d'avance pour vos réponses!

Mathilde
 
- 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

Réponses
8
Affichages
304
Réponses
2
Affichages
216
Retour