Sub Ventiler()
Dim d As Object, tablo, resu(), n&, i&, x$, lig&, dest As Range
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
With Sheets("Feuil1") 'à adapter
tablo = .[A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 2)
resu(1, 1) = "Code": resu(1, 2) = "Contact 1" 'titres
n = 1
For i = 2 To UBound(tablo)
x = tablo(i, 1)
If d.exists(x) Then
lig = d(x)
resu(lig, 2) = resu(lig, 2) & Chr(1) & tablo(i, 2) 'concaténation
Else
n = n + 1...
j'ai essayé mais ça n'a pas marché avec moi, Si vous pouvez faire un coup d'oeil svpBonjour Zineb,
Un essai en PJ avec :
A valider avec Ctrl+Maj+EntréeVB:=SIERREUR(INDEX($B$2:$B$8;PETITE.VALEUR(SI($A$2:$A$8=$D5;LIGNE(INDIRECT("1:"&LIGNES($A$2:$A$8))));COLONNE()-4));"")
Un coup d'oeil à quoi ?Si vous pouvez faire un coup d'oeil
Je n'arrive pas à le téléverser malgré l'avoir converti, Il est très volumineuxUn coup d'oeil à quoi ?
Vous auriez un fichier test ?
Sub Ventiler()
Dim d As Object, tablo, resu(), n&, i&, x$, lig&, dest As Range
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
With Sheets("Feuil1") 'à adapter
tablo = .[A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 2)
resu(1, 1) = "Code": resu(1, 2) = "Contact 1" 'titres
n = 1
For i = 2 To UBound(tablo)
x = tablo(i, 1)
If d.exists(x) Then
lig = d(x)
resu(lig, 2) = resu(lig, 2) & Chr(1) & tablo(i, 2) 'concaténation
Else
n = n + 1
d(x) = n 'mémorise le n° de ligne
resu(n, 1) = x
resu(n, 2) = tablo(i, 2)
End If
Next
'---restitution---
Application.ScreenUpdating = False
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
Set dest = .[D1] '1ère cellule de destination, à adapter
dest.EntireColumn.Resize(, .Columns.Count - dest.Column + 1).ClearContents 'RAZ
dest(1, 3).Resize(, .Columns.Count - dest.Column - 1).Delete xlToLeft 'supprime les titres
dest.Resize(n, 2) = resu
dest(1, 2).Resize(n).TextToColumns dest(1, 2), xlDelimited, Other:=True, OtherChar:=Chr(1) 'commande Convertir
i = dest.CurrentRegion.Columns.Count
If i > 2 Then dest(1, 2).AutoFill dest(1, 2).Resize(, i - 1)
With .UsedRange: End With 'actualise la barre de défilement horizontale
End With
End Sub
Que veux tu dire ? Il n'y a pas de ligne en doublon dans le tableau source.Il y a boire et à manger dans la colonne contact...
0668284124² |
0655591080COMMERCIA |
0522579568/FAX0522571062 MrSOUFIANE |