bonjour,
il y a deux lectures à ton problème...
Si on traite colonne par colonne et qu'on supprime les cellules vides, ça remonte tout vers le haut,.. et ça détruit la cohérence des lignes.
J'ai supposé que c'est la deuxième lecture qui est bonne et qu'il suffit de conserver les lignes sans cellules vides.
Cette macro traite 64776 lignes en 6 secondes.
Sub test()
Set ws = ActiveSheet
Application.ScreenUpdating = False
i = ws.UsedRange.Columns.Count
Tablo = ws.UsedRange
j = UBound(Tablo)
ws.UsedRange.Clear
For a = 1 To j
For b = 1 To i
If Tablo(a, b) <> "" Then
Cells(a, k + 1) = Tablo(a, b)
k = k + 1
End If
Next
k = 0
Next
End Sub
S'il faut en plus supprimer les lignes vides, utiliser plutôt cette autre macro :
Sub test()
Set ws = ActiveSheet
Application.ScreenUpdating = False
i = ws.UsedRange.Columns.Count
Tablo = ws.UsedRange
j = UBound(Tablo)
x = 1
ws.UsedRange.Clear
For a = 1 To j
For b = 1 To i
If Tablo(a, b) <> "" Then
Cells(x, k + 1) = Tablo(a, b)
k = k + 1
End If
Next
If k > 0 Then x = x + 1
k = 0
Next
End Sub
A+