Recherche V et concatenation

ampirus

XLDnaute Nouveau
Bonjour je cherche une formule me permettant de réaliser les travaux suivant :
1- Dans une feuille, excel nous avons deux colonnes "codes fournisseurs et " codes articles " :
Code Fourn Code Article
45 70
44 70
41 60
45 70

2- Nous voulons avoir dans une autre feuille excel le code articles et les fournisseurs avec lesquels cet articles a été acheté sans doublons dans une même cellule . dans la colonne code fournisseur , pour le code article 70, on a les codes avec lesquels ont a acheté cet articles, 45 et 44 puisque cette liste est sans doublons coe ci après:
Code article Code Fourn
70 45,44
60 41

Merci de bien vouloir, m'aider...toutes les contributions sont les biens venue
 

ampirus

XLDnaute Nouveau
Re : Recherche V et concatenation

Merci, mais j'ai pas encore trouvé la solution !!! la proposition de macro faite par skooti ne supprime pas les doublons comme je l'ai demandé, je viens de la tester. Merci quand même pour la remarque et la contibution. En même temps avec les macros c'est pas facil, je doit comprendre un peu ce que je fais et non juste copié coller. Donc une autre proposition sera la bienvenue!!!
 

ampirus

XLDnaute Nouveau
Re : Recherche V et concatenation

JNP, le résultat est parfait, j'ai même pu remplacer le -, par ; en modifiant le code VBA. Mais j'ai du mal à le comprendre, trop débutant. Est ce que c'est possible que tu me redonnes le fichier, mais avec des commentaires à l'intérieur du code qui, me permettront de le comprendre, mais surtout de le reprendre moi même. Merci pour ta contribution...
Ampirus
 

JNP

XLDnaute Barbatruc
Re : Recherche V et concatenation

Re :),
Est ce que c'est possible que tu me redonnes le fichier, mais avec des commentaires à l'intérieur du code qui, me permettront de le comprendre, mais surtout de le reprendre moi même
Comme indiqué, c'est du Dico inspiré de JB avec sa macro de tri :p... J'avais utilisé " - " car la "," aurait risqué d'être interprété comme un décimal :rolleyes:...
VB:
Function DédoublonnageTrié(Plage As Range, Rang As Double) As String
' La fonction attends une plage à trier et le N° de résultat du tableau à renvoyer
Application.Volatile
' Permet que la fonction se recalcule à chaque modification de la feuille
Dim C As Range
' Dimensionne une cellule
Set MonDico = CreateObject("Scripting.Dictionary")
' Crée un dictionnaire
For Each C In Plage
' Pour chaque cellule dans la plage demandée
If C.Value <> "" Then
' si la cellule n'est pas vide
MonDico.Item(C.Value) = C.Value
' ajoute la valeur de la cellule en lui associant cette même valeur
' comme clef, ce qui fait que les clefs étant uniques, il n'y a plus de doublon
End If
' fin du test
Next C
' cellule suivante
temp = MonDico.items
' mets dans un tableau la liste des mots du dico
Call tri(temp, LBound(temp), UBound(temp))
' appelle la fonction de tri en précisant les bornes du tableau
If Rang <= UBound(temp) Then
' si l'indice fait partie du tableau
DédoublonnageTrié = temp(Rang)
' la fonction renvoie le tableau à cet indice
Else
' sinon
DédoublonnageTrié = ""
' elle renvoie "rien"
End If
' fin du test
End Function
VB:
Function ConcaténerRecherche(ValeurCherchée As String, Plage1 As Range, Plage2 As Range) As String
' La fonction attends la valeur à prendre, et les 2 colonnes de référence
' Je n'ai pas mis de test et si les 2 colonnes ne sont pas égales, il y aura une erreur
Application.Volatile
Dim C As Range
Set MonDico = CreateObject("Scripting.Dictionary")
For Each C In Plage1
If C.Text = ValeurCherchée Then
' Si je trouve la valeur
MonDico.Item(Plage2.Cells(C.Row - Plage1.Row + 1, 1).Value) = Plage2.Cells(C.Row - Plage1.Row + 1, 1).Value
' je prends la valeur corresponadant dans la 2ème colonne - C.Row me donne la ligne absolue de C dans la feuille
' plage1.Row me donne la première ligne de la plage pour obtenir la ligne relative
End If
Next C
If MonDico.Count = 0 Then Exit Function
' si pas de résultat, "rien"
temp = MonDico.items
Call tri(temp, LBound(temp), UBound(temp))
ConcaténerRecherche = Join(temp, " - ")
' concatène le tableau avec le séparateur choisi
End Function
Pour la macro de tri, ben, même si j'ai à peu près compris comment elle fonctionne en fonction récursive, il n'est pas évident de la commenter :eek:...
Je ne peux que te conseiller l'excellent site de JB où tu trouveras plein d'utilisation du Dico et sa macro de tri :rolleyes:...
Edit: bonjour JNP pas mal du tout ton fichier
Merci JHA :).
Bonne journée :cool:
 

Discussions similaires

Réponses
15
Affichages
791
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 331
Messages
2 087 355
Membres
103 528
dernier inscrit
hplus