Concatenage multiple

ted1057

XLDnaute Occasionnel
Bonjour à la communauté,

Je travaille sur un tableau EXCEL qui me permettra d'identifier les clients par rapport à un numéro d'AR fournisseur.Recevant chaque semaine une liste d'AR fournisseur disponible, je dois rechercher manuellement les clients associés.
Un AR fournisseur pouvant être lié à un ou plusieurs clients.

Exemple l'AR fournisseur 1641879 peut être affecté à Paul, Arthur et Cyril.

Je souhaiterais, voir Fichier Excel, un résultat du genre
Colonne A Colonne B
AR fournisseur Paul / Arthur / Cyril
 

Pièces jointes

  • suivi fournisseur.xlsx
    12.6 KB · Affichages: 53

Modeste

XLDnaute Barbatruc
Bonjour ted1057,

Une solution par macro ...
Insérer les lignes suivantes dans un module standard:
VB:
Sub clients()
Set liste = CreateObject("scripting.dictionary")
For lig = 2 To Feuil1.Cells(Rows.Count, 4).End(xlUp).Row
    liste(Feuil1.Cells(lig, 4).Value) = liste(Feuil1.Cells(lig, 4).Value) & _
        IIf(liste.exists(Feuil1.Cells(lig, 4).Value), "/", "") & Feuil1.Cells(lig, 2).Value
Next lig
Feuil2.[A2].Resize(liste.Count, 1) = Application.Transpose(liste.Keys)
Feuil2.[F2].Resize(liste.Count, 1) = Application.Transpose(liste.items)
End Sub

[Edit:] Salut JM :), salut Paf :)
 
Dernière édition:

Paf

XLDnaute Barbatruc
bonjour ted1057

un essai par fonction personnalisée:

en F2: =Client(A2) à tirer vers le bas

dans un module standard

VB:
Function Client(Fournisseur)
Dim Tablo, i As Long, Concat As String
With Worksheets("Suivi commande")
Tablo = .Range("B2:D" & .Range("B" & Rows.Count).End(xlUp).Row)
End With
For i = LBound(Tablo) To UBound(Tablo)
    If Tablo(i, 3) = Fournisseur Then Concat = Concat & IIf(Len(Concat) > 0, " / ", "") & Tablo(i, 1)
Next
Client = Concat
End Function

A+

Edit : Bonjour Modeste
 

Paf

XLDnaute Barbatruc
Re,

dans la mesure ou la liste des fournisseurs change chaque semaine, il vaut mieux, plutôt que la fonction personnalisée, utiliser une macro de ce type:

VB:
Sub Clients()
 Dim TabloC, TabloF, TabloFC, i As Long, Concat As String
 With Worksheets("Suivi commande")
 TabloFC = .Range("B2:D" & .Range("B" & Rows.Count).End(xlUp).Row)
 End With
 With Worksheets("AR fournisseur")
 TabloF = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
 ReDim TabloC(1 To UBound(TabloF))
 For i = LBound(TabloF) To UBound(TabloF)
  For j = LBound(TabloFC) To UBound(TabloFC)
  If TabloF(i, 1) = TabloFC(j, 3) Then TabloC(i) = TabloC(i) & IIf(Len(TabloC(i)) > 0, " / ", "") & TabloFC(j, 1)
  Next
 Next
 .Range("F2").Resize(UBound(TabloC, 1), 1) = Application.Transpose(TabloC)
 End With
End Sub

A+
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote