Bonjour Noux, le Forum.
J'ai regardé ton problème de temps d'exécution de la macro et j'ai essayé d'optimisé cette dernière.
Tu trouveras ci-joint un petit exemple utilisant les 2 versions.
Sur ma config, le temps d'exécution est quasiment divisé par 100 !!
La nouvelle procédure se présente comme suit :
'Gèle l'affichage du déroulement de la macro
Application.ScreenUpdating = False
With ActiveSheet
'Détermine la dernière colonne utilisée
DernColonne = .Range("A1").SpecialCells(xlLastCell).Column
DernLigne = .Range("A1").SpecialCells(xlLastCell).Row
'Pour chaque colonne
For C = 2 To DernColonne
'Couper-Coller les données en A
L = .Range("A65536").End(xlUp).Row
.Range(.Cells(L + 1, 1), .Cells(L + DernLigne, 1)).Value = .Range(.Cells(1, C), .Cells(DernLigne, C)).Value
Next C
'Effacer anciennes données
.Range(.Cells(1, 2), .Cells(DernLigne, DernColonne)).ClearContents
.Cells(1, 1).Select
End With
Application.ScreenUpdating = True
Cordialement.
Didier_mDF