Problème liste déroulante

  • Initiateur de la discussion Initiateur de la discussion flügun
  • 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 !

F

flügun

Guest
Bonjour à tous,
Je souhaiterais créer une liste déroulante où les données se trouveront sur une feuille à part et pouvoir retrouver cette liste sur différentes autres feuilles du même classeur.
Je débute en vba et à force de chercher je commence vraiment a m'embrouiller 😕
voivi ce que j'ai fait :

Sub MajListeValidation()
Dim sh As Worksheet
For Each sh In Worksheets
sh.Range("A6").Validation.Delete
With sh.Range("A6").Validation
.Add Type:=xlValidateList, Formula1:="=Q2:" & Range("Q29").End(xlUp).Address
End With
Next sh
End Sub

Je pense qu'il faudrait que je selectionne la feuille sur laquel se trouve les données de ma liste mais je ne sais pas trop comment faire.

Merci d'avance
 
Re : Problème liste déroulante

Salut Flügun,

Pourquoi utiliser du VBA, il y a plus simple 😉

Sur une feuille "Params" ou avec un autre nom, tu crées ta/tes listes que tu nommes (Menu Insertion -> Nom -> Définir)
Ex. : Liste de fonctions de A1:A9, nommée : ListeFonc

Sur ta feuille principale, tu crées ta validation de données, avec comme argument de Liste : =ListeFonc

Voilà, j'espère avoir été assez clair 😉
 
Re : Problème liste déroulante

Bonjour Flügun, BrunoM45 et le forum,

Comme le dit Bruno, il est préférable de passer par une liste définie.

La procédure passe par le menu Insertion/Nom/définir puis dans "Noms dans le classeur " mettre un titre "Liste" par exemple, et en bas dans "fait référence à :", définir la plage des données de la liste.

- Si tu la veux fixe, il suffit de sélectionner la plage avant d'ouvrir le menu pour définir la plage.

- Si tu la veux mobile tu peux utiliser la formule suivante :
=DECALER(Données!$A$2;0;0;NBVAL(Données!$A:$A))
Voir dans le fichier exemple joint.

Pour mettre en place la liste de validation dans toutes les feuilles du classeur, tu peux utiliser la macro suivante :

Sub MajListeValidation()
Dim Ws As Worksheet

For Each Ws In Worksheets
If Ws.Name <> "Données" Then ' Interdire le travail de la macro sur la feuille Données
With Ws.Range("A6").Validation
.Delete ' Effacement de la précédente liste
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Liste" ' Installation de la nouvelle liste
End With
End If
Next Ws
End Sub

A noter que le travail de la macro est interdit dans la feuille "Données".

Cordialement

Bernard
 

Pièces jointes

Re : Problème liste déroulante

Bonjour c'est encore moi,
J'ai un autre problème :
Le classeur sur lequel je travaille contient beaucoup de feuilles (une centaines) la vba de CBernardT me permettant de mettre la liste déroulante sur toutes les feuilles est donc très utiles, malheureusement il y a 4 feuilles que je ne voudrais pas modifier. J'ai donc continué la vba mais lorsque je l'exécute, rien ne se produit. Pourriez vous me donner quelques conseil car comme je l'ai dit je débute vraiment dans les vba et j'ai beaucoup de mal.

Sub MajListeValidation()
Dim Ws As Worksheet
For Each Ws In Worksheets
If Ws.Name <> "Genres et Especes" Then
ElseIf Ws.Name <> "P3" Then
ElseIf Ws.Name <> "Numérotation" Then
ElseIf Ws.Name <> "Plan gen virtuel" Then
With Ws.Range("A6").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=GenresEspeces"
End With
End If
Next Ws
End Sub

Merci d'avance (encore une fois😕 )
 
Re : Problème liste déroulante

re,

Le VBA c'est juste de la logique 😀
Tu te dis si le nom de ma feuille est différend de "Genres ..." et si le nom de ma feuille est différend de "Plan ..." et ...

Donc tu écrit :
Code:
For Each Ws In Worksheets
If Ws.Name <> "Genres et Especes" AND Ws.Name <> "P3" _
  AND Ws.Name <> "Numérotation" AND Ws.Name <> "Plan gen virtuel" Then
  With Ws.Range("A6").Validation
    .Delete 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
      xlBetween, Formula1:="=GenresEspeces" 
  End With
End If
Next Ws

Voilà 😉
 
- 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

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
740
Réponses
8
Affichages
828
Retour