Afficher une liste d'information via une liste déroulante

Bonjour à tous,

Me voilà dans l'embarras.

Je cherche à afficher une liste d'information en fonction du choix via une liste déroulante.

=> liste déroulante : Gyom

cellule en dessous :

toutes les infos liées à Gyom soit plusieurs lignes via un tableau sur une autre feuille

Ce sera bien plus facile à comprendre via l'exemple mis en pièce jointe

Merci d'avance,

19exemple-forum.xlsx (10.57 Ko)

Bonjour Dagus, bonjour le forum,

Ton fichier modifié en pièce pointe avec l'événementielle Change dans l'onglet liste déroulante ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim L As Worksheet 'déclare la variable L (onglet Liste déroulante)
Dim S As Worksheet 'déclare la variable S (onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

If Target.Address <> "$E$3" Then Exit Sub 'si le changement a lieu ailleurs que dans la cellule E3, sort de la procédure
Set L = Worksheets("liste déroulante") 'définit l'onglet L
Set S = Worksheets("source") 'définit l'onglet S
If Target.Value = "" Then L.Range("E6:F14").ClearContents: Exit Sub 'si E3 est effacée, effac e la plage E6:F14 et sort de la procédure
L.Range("E6:F14").ClearContents 'vide la plage E6:F14
TV = S.Range("A1").CurrentRegion 'définit le tableau des valeur TV
K = 1 'initialise K
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    If TV(I, 1) = Target.Value Then 'condition : si la donnée ligne I colonne 1 de TV est égale à la valeur de E3
        ReDim Preserve TL(1 To 2, 1 To K) 'redimensionne le tableau des lignes TL
        TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV (= Transposition)
        TL(2, K) = TV(I, 2) 'récupère dans la ligne 2 de TL la donnée en colonne 2 de TV (= Transposition)
        K = K + 1 'incrémente K (ajoute une colonne au tableau de lignes TL
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
'si K est supérieure à 1, renvoie dans la cellule E6 redimensionnée de l'onglet L, le tableau TL transposé
If K > 1 Then L.Range("E6").Resize(UBound(TL, 2), 2).Value = Application.Transpose(TL)
End Sub
16dagus-v01.xlsm (18.59 Ko)

Merci !

bonjour

et pour les privés ; allergiques ...... au vba

19dagus.xlsx (11.70 Ko)

cordialement

+1 Tulipe

Remplacer du code vba par des fonctions excel n'est pas seulement plus accessible pour tout le monde, c'est aussi plus propre, plus maintenable, mieux intégré, plus évolutif, etc.

(le +1 vaut pour un certain nombre de tes interventions, puisque tu le fais souvent )

Rechercher des sujets similaires à "afficher liste information via deroulante"