Microsoft 365 Remplir une colonne en fonction d'une autre (Liste Multiple)

caba1023

XLDnaute Nouveau
J'essaye de poster ici car je ne trouve pas de solution à mon problème.

Bonjour,

Contexte : Je cherche à trier les infos d'une base de données sur une fiche de manières différentes.

Problématique : Sur la fiche 1, j'ai une base de données avec sur la colonne 1 : N°commande et sur la colonne 2 : les dates correspondantes aux commandes.
Sur la fiche 2, je cherche à remplir une colonne "dates" en fonction du n°commande que je sélectionne dans la liste déroulante. La subtilité est que je veux insérer plusieurs infos dans la même cellule (car je dois trié ça de cette façon avec d'autres paramètres pas importants ici), ce qui implique une liste déroulante multiple. J'ai pris appui sur ce code VBA (https://trumpexcel.com/select-multiple-items-drop-down-list-excel/ pour la liste multiple sans répétition dans la fiche 2.

Où j'en suis : En ce moment, sur la fiche 2 je peux sélectionner et insérer plusieurs N°commande dans la même cellule dans la colonne "N°commande", mais maintenant, je cherche à remplir les cellules de la colonne "dates" avec les dates correspondantes aux N°commande.

Exemple : Sur la base de données "fiche 1", Colonne 1, j'ai sur des cellules séparées:
N°Commande
234
235
236

Fiche 1 colonne 2, j'ai sur des cellules séparées:
Date
12.12.2020
13.11.2021
17.11.2021

Sur la Fiche 2, Colonne 1, j'ai sur la même cellule (en sélectionnant depuis la liste déroulante chaque numéro de commande) :
234, 235, 236

Sur la Fiche 2, Colonne 2, je cherche à avoir sur la même cellule (en fonction du numéro de commande ajouté précédemment) :
12.12.2020, 13.11.2021, 17.11.2021

Si quelqu'un comprends la problématique et peut m'aider, c'est volontiers.

Voici le fichier exemple pour une visualisation plus claire ci-joint :

Salut!
 

Pièces jointes

  • KLguYzOrVlJ_Problematique-liste-deroulante.xlsm
    15.3 KB · Affichages: 9
Solution
Bonjour Caba, et bienvenu sur XLD,
Je vous propose une petite fonction perso, ce qui simplifie beaucoup l'approche.
VB:
Function ChercheDates(N$)
    Dim T, i%, Valdate
    T = Split(N, ",")
    ChercheDates = ""
    For i = 0 To UBound(T)
        Valdate = Application.VLookup(Val(Trim(T(i))), Sheets("Base_de_donnee").[A:B], 2, False)
        ChercheDates = Format(Valdate, "dd.mm.yyyy") & "," & ChercheDates
        ChercheDates = Mid(ChercheDates, 1, Len(ChercheDates) - 1)
    Next i
End Function

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Caba, et bienvenu sur XLD,
Je vous propose une petite fonction perso, ce qui simplifie beaucoup l'approche.
VB:
Function ChercheDates(N$)
    Dim T, i%, Valdate
    T = Split(N, ",")
    ChercheDates = ""
    For i = 0 To UBound(T)
        Valdate = Application.VLookup(Val(Trim(T(i))), Sheets("Base_de_donnee").[A:B], 2, False)
        ChercheDates = Format(Valdate, "dd.mm.yyyy") & "," & ChercheDates
        ChercheDates = Mid(ChercheDates, 1, Len(ChercheDates) - 1)
    Next i
End Function
 

Pièces jointes

  • KLguYzOrVlJ_Problematique-liste-deroulante (1).xlsm
    18.1 KB · Affichages: 8

caba1023

XLDnaute Nouveau
Merci beaucoup, c'est ce dont j'avais besoin pour que ça fonctionne. J'ai juste inverser l'ordre des dates pour que ça corresponde à l'ordre des commandes et rajouter un espace " " à la fin pour qu'il n'y ait pas une partie de la date qui soit écrasées après 2 saisies. Dû à ma manipulation, j'ai du rajouter une condition if pour ne pas rajouter la virgule au début de la première saisie de la date.

VB:
Function ChercheDates(N$)
    Dim T, i%, Valdate
    T = Split(N, ",")
    ChercheDates = ""
    For i = 0 To UBound(T)
        If i = 0 Then
        Valdate = Application.VLookup(Val(Trim(T(i))), Sheets("Base_de_donnee").[A:B], 2, False)
        ChercheDates = ChercheDates & Format(Valdate, "dd.mm.yyyy") & " "
        ChercheDates = Mid(ChercheDates, 1, Len(ChercheDates) - 1)
        Else
        Valdate = Application.VLookup(Val(Trim(T(i))), Sheets("Base_de_donnee").[A:B], 2, False)
        ChercheDates = ChercheDates & ", " & Format(Valdate, "dd.mm.yyyy") & " "
        ChercheDates = Mid(ChercheDates, 1, Len(ChercheDates) - 1)
        End If
    Next i
End Function
 

Pièces jointes

  • KLguYzOrVlJ_Problematique-liste-deroulante .xlsm
    20.1 KB · Affichages: 4

paco paco

XLDnaute Nouveau
Bonjour,

J'ai un fichier Excel sur lequel je veux pouvoir renseigner une colonne sous forme de liste déroulante (colonne B).
Mais en fonction de l'information saisie depuis cette liste déroulante, je souhaite qu'en colonne A soit saisie automatiquement une autre donnée.
Par exemple, si je sélectionne quelqu'un dans la liste déroulante, je souhaite qu'en colonne A m'affiche l'équipe concernée parmi plusieurs.

Comment faire svp ?

En vous remerciant.
 

Discussions similaires