Re,
@xorsankukai la macro est bigrement efficace. Par contre comme je disais dans le commentaire précédent avec la ligne de code suivante
Range("H1").Resize(UBound(tabloR, 1), UBound(tabloR, 2)) = tabloR
cela recopie en H1 alors que je souhaite plutôt écraser ou alors au pire créer dans un autre onglet ?
y a t'il une solution ?
Option Explicit
Dim tablo, tabloR(), dico As Object, k
Dim i&, n&, d&, colMax&
Sub gmb()
tablo = Sheets("Feuil1").Range("A1").CurrentRegion
Set dico = CreateObject("Scripting.Dictionary")
colMax = 1
For i = 1 To UBound(tablo, 1)
If dico.exists(tablo(i, 1)) Then
dico(tablo(i, 1)) = dico(tablo(i, 1)) + 1
If dico(tablo(i, 1)) > colMax Then colMax = dico(tablo(i, 1))
Else
dico(tablo(i, 1)) = 1
End If
Next i
k = dico.keys
ReDim tabloR(1 To dico.Count, 1 To colMax + 1)
For n = 0 To dico.Count - 1
tabloR(n + 1, 1) = k(n)
For i = 1 To UBound(tablo, 1)
d = 0
If tablo(i, 1) = k(n) Then
While tabloR(n + 1, d + 1) <> ""
d = d + 1
Wend
tabloR(n + 1, d + 1) = tablo(i, 2)
End If
Next i
Next n
Cells.ClearContents
Range("A1").Resize(UBound(tabloR, 1), UBound(tabloR, 2)) = tabloR
End Sub
Cordialement,