Créer Liste déroulante automatique Excel

anonyme46 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
anonyme46 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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

7 réponses

  1. eljojo_e Messages postés 1255 Statut Membre 155
     
    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
  2. anonyme46 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    1. eljojo_e Messages postés 1255 Statut Membre 155
       
      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
  3. anonyme46 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  4. eljojo_e Messages postés 1255 Statut Membre 155
     
    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
    1. eljojo_e Messages postés 1255 Statut Membre 155
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. anonyme46 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  7. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    1. eljojo_e Messages postés 1255 Statut Membre 155
       
      ----> super ça ! Je connaissais pas.
      0
  8. anonyme46 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
     
    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