Bonjour,
Voici un essai avec restitution sur une nouvelle feuille :
sub test()
set dico = createobject("Scripting.dictionary")
t = activesheet.usedrange.value
for i = lbound(t) to ubound(t)
clé = t(i, 1) & "|" & t(i, 2)
if not dico.exists(clé) then 'si clé n'existe pas
n = n + 1 'numéro nouvelle clé > position correspondante dans le tableau t en cours de dédoublonnage
dico(clé) = n 'clé stocke position
for k = lbound(t, 2) to ubound(t, 2) 'la ligne n prend la valeur de la ligne i
t(n, k) = t(i, k)
next k
else 'si clé existe
pos = dico(clé) 'récupère position dans t à partir de la valeur de la clé
t(pos, 3) = t(pos, 3) & " ; " & t(i, 3) 'maj de la colonne 3 du tableau t
end if
next i
with sheets.add(after:=activesheet)
.name = "Recap " & format(now, "YYMMDD HHMMSS")
.cells(1, 1).resize(n, ubound(t, 2)).value = t
.listobjects.add(source:=.usedrange, xllistobjecthasheaders:=xlyes).name = replace(.name, " ", "")
end with
end sub
Cdlt,