bonjour 78Chris, luj,
Fusionner, c'est quelque chose à éviter, cela cause toujours des problèmes plus tard.
Sub LUJ()
Dim Dict, i, aA
Set Dict = CreateObject("scripting.dictionary") 'dictionaire
Dict.comparemode = vbTextCompare 'majuscules=miniscules
With Sheets("blad1")
If .AutoFilterMode Then .AutoFilterMode = False
If .FilterMode Then .ShowAllData
Set c = .Range("A1").CurrentRegion 'votre plage
c.Borders.LineStyle = xlContinuous 'bordures
c.Columns(2).UnMerge 'défusionner colonne 2
Set c2 = c.Cells(2, 2).Resize(c.Rows.Count - 1) 'plage de la 2eme colonne
Set c1 = c.Offset(, 27 - c.Column).Resize(, 1) 'plage auxiliaire = colonne AA
With c1 'plage auxilaire
.FormulaR1C1 = "=RC2" 'copy de la 2eme colonne
aA = .Value2 'lire les données de cette colonne
For i = 2 To UBound(aA) 'boucler ces valeurs
If Not Dict.exists(aA(i, 1)) Then 'cette valeur n'est pas encore traitée
c1.AutoFilter 1, aA(i, 1) 'filtrer
Application.DisplayAlerts = False
c2.SpecialCells(xlVisible).Merge 'fusionner les cellules visible de la colonne 2
Application.DisplayAlerts = True
.AutoFilter 1 'désactiver filtre
Dict(aA(i, 1)) = vbEmpty 'ajouter au dictionaire
End If
Next
.AutoFilter
End With
.Columns("AA").ClearContents 'RAZ colonne auxiliaire
End With
End Sub