Créer Liste déroulante automatique Excel

Fermé
anonyme46 Messages postés 5 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 29 mars 2012 - Modifié par anonyme46 le 29/03/2012 à 11:25
anonyme46 Messages postés 5 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 29 mars 2012 - 29 mars 2012 à 17:17
Bonjour à tous,

Je n'ai pas trouvé de réponse à mon problème ni dans ma tête ni sur les forums mais j'ai peut-être mal chercher.


J'ai besoin que mes listes déroulantes se crées automatiquement :


Dans ma feuille "Questionnaire" j'ai deux colonnes : une dans laquelle il y aura mes listes déroulante et l'autre dans laquelle il y a les critères de recherche qui me permettront de créer mes listes déroulantes.

Colonne A_______________________Colonne B

Liste déroulante___________________TOTO1
Liste déroulante___________________ TOTO2
Liste déroulante___________________ TOTO3
Liste déroulante___________________ TOTO1
Liste déroulante___________________ TOTO2
Liste déroulante___________________ TOTO4


Dans ma feuille "UDC" j'ai deux colonnes : Une dans laquelle je retrouve la liste des codes liés à mon critère de recherche et l'autre dans laquelle il y a les valeurs que j'aimerai voir apparaître dans mes listes déroulantes.


Colonne A________________Colonne B

TOTO2___________________ Client 1
TOTO2___________________ Client 2
TOTO2___________________ Client 3
TOTO1___________________ Article 1
TOTO1___________________ Article 2
TOTO1___________________ Article 3
TOTO1___________________ Article 4
TOTO3___________________ Fourn 1
TOTO3___________________ Fourn 2
TOTO4___________________ PROD 1
TOTO4___________________ PROD 2


Dans ma feuille "Questionnaire" J'aimerai donc pouvoir, à chaque fois que la colonne B affiche TOTO1 (par exemple), avoir les valeurs de la colonne B de la feuille "UDC" qui apparaissent en liste déroulante soit ici = Article 1 ;Article 2; Article 3; Article 4

Le problème c'est que j'ai environ500 lignes dans ma feuille "Questionnaire" et 54000 lignes dans ma feuille "UDC", donc j'aimerai pouvoir automatiser cela.


Quelqu'un aurait-il la charmante solution à mon problème ?

Bonne journée à tous

A voir également:

7 réponses

eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
29 mars 2012 à 11:50
Bonjour,

Peut etre un bout de réponse :

Met ce code dans la feuille correspondante a tes listes


Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Range("C2").Select ' -> voir quel cellule va accueillir la liste
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$i$200:$i$400 ' -> là ou se situe la liste
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

Application.EnableEvents = True

End Sub
0
anonyme46 Messages postés 5 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 29 mars 2012
29 mars 2012 à 12:29
Bonjour et merci de vous être pencher sur mon sujet,

J'ai rajouter votre programme dans la feuille en question de VBA

J'ai remplacé la valeur C2 par l'une des cellules qui m'intéresse et la valeurs $i$200:$i$400 par la plage de données dans laquelle il y a mes valeurs...

Mais rien ne se produit lorsque je sélectionne ma cellule...

Je ne suis pas un pro de VBA aussi ;-)

Ensuite si je comprends se programme il ne s'applique qu'a une seule cellule... j'en ai 499 qui doivent faire apparaitre les valeurs correspondantes contenues dans les 54000 lignes de mon autres feuilles...

Je risque d'y passer un sacré moment :-)

Merci beaucoup beaucoup quand même je vais étudier ton offre.
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
Modifié par eljojo_e le 29/03/2012 à 13:01
En faite se code va se mettre en route quand tu va modifé une cellule dans ta feuille

Et pour les autre cellules, il faut faire une boucle

for a = 1 to 499

Range("C & a).Select ' -> voir quel cellule va accueillir la liste
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$i$200:$i$400 ' -> là ou se situe la liste
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

next

après il faut adapter a ton fichier.

Si tu veux de l'aide, il faudrait me faire voir ton fichier (avec ci-joint.com) et me dire quelle cellule vont accueillir quelle liste
0
anonyme46 Messages postés 5 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 29 mars 2012
29 mars 2012 à 14:19
Encore merci pour ton aide,

Voici le lien via ci-joint.com

https://www.cjoint.com/?3CDoq0tAunj

Je continu mes recherches, et je vais analyser le complément que tu m'as envoyer.

A bientôt
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
Modifié par eljojo_e le 29/03/2012 à 16:11
Tiens je t'es mis ton fichier qui fonctionne :

https://www.cjoint.com/?3CDpTECVq59

Par contre, on ne peut pas faire de liste à partir d'une autre feuille j'ai donc copié les 2 colonnes de la 2eme feuille dans la première.


Cordialement,
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
Modifié par eljojo_e le 29/03/2012 à 16:17
Le code est pas bon tient remplace par celui la

Sub ok()

Dim a, b As Double
Dim c, d, e As Integer
e = 0

For a = 2 To 65536

If Range("b" & a).Value <> "" Then

For b = 2 To 65536

If Range("m" & b).Value = Range("b" & a).Value Then
c = c + 1
If c = 1 Then d = b
e = b
End If

Next

With Range("a" & a).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=n" & d & ":n" & e ' -> là ou se situe la liste"
End With
c = 0

End If

Next

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anonyme46 Messages postés 5 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 29 mars 2012
29 mars 2012 à 16:15
Merci beaucoup beaucoup c'est pas mal du tout, c'est clair que ça rame... j'ai supprimé tous les "codes" qui ne commençaient pas par 00 41 et 57 dans la table UDC, ça devrait aller plus vite...

je te fait un retour dés que tout fonctionne.

A+ et thank you again
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 399
Modifié par Vaucluse le 29/03/2012 à 16:16
Bonjour
et pourquoi pas une solution sans VBA si le nom du client est répété sur chaque ligne d'article? (conformément au modèle du message)
voir ici:
https://www.cjoint.com/?BCDqoHf1Zn7
crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
29 mars 2012 à 16:23
----> super ça ! Je connaissais pas.
0
anonyme46 Messages postés 5 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 29 mars 2012
29 mars 2012 à 17:17
Merci à vous deux, Vaucluse tu as trouvé exactement ce que je souhaitais.

Eljojo_e je n'ai pas réussi à adapter ton programme avec le mien mais je ne suis pas assez caler en VB. Les listes n'affichais pas toutes les bonnes valeurs. Mais je voyais l'idée...

Je vous remercie encore mille fois pour le temps que vous avez consacrer pour ça.

A bientôt
0