Essayez ce code :
Sub Contract2()
Dim TabS(), TabR(), I As Long, J As Long, NbLigne As Long, NbColonne As Long
Dim Cr As Long
NbLigne = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row
NbColonne = ActiveSheet.UsedRange.Columns.Count
ReDim TabR(1 To NbLigne, 1 To NbColonne)
Lr = 1
For I = 1 To NbLigne
TabS = Range(Cells(I, 1), Cells(I, NbColonne))
Cr = 1
For J = 1 To NbColonne
If TabS(1, J) <> "" Then
' on inscrit la donnée dans le tableau résultat
TabR(Lr, Cr) = TabS(1, J)
Cr = Cr + 1 'on prépare l'écriture de la prochaine donnée même ligne colonne suivante
' on a inscrit au moins une donnée sur la ligne Lr du tableau résultat
Inscrit = True
End If
Next J
' si on a incrit une donnée, alors on passe à la ligne suivante du tableai résultat
If Inscrit Then Lr = Lr + 1
Next I
Sheets("LRD").Range("A1").Resize(UBound(TabR), NbColonne) = TabR
End Sub
En fait il découpe la feuille source en ligne, et chaque ligne résultat est un tableau, ensuite il copie colle le tableau résultat.
Comme cela on a pas à mettre la totalité des cellules de votre plage.
Merci de votre retour. Si vous avez besoin de précisions...
@ bientôt
LouReeD