Sub Macro2()
Dim s As Object 'déclare la variable s (onglet Source)
Dim d As Object 'déclare la variable d (onglet Destination)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim li As Range 'déclare la variable li (LIgnes)
Dim col As Byte 'déclare la variable col (COLonne)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Set s = Sheets("GAMBETTA") 'définit l'onglet source s
Set d = Sheets("Ref") 'définit l'onglet destination d
dl = s.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = s.Range("AO3:BI" & dl) 'définit la plage pl
For Each li In pl.Rows 'boucle 1 : sur toutes les lignes li de la plage pl
For col = 41 To 61 Step 4 'boucle 2 : sur les colonnes 41 à 61 par pas de 4
If s.Cells(li.Row, col).Value <> "" Then 'condition : si la colonne n'est pas vide
'définit la cellule de destination dest
Set dest = IIf(d.Range("A1").Value = "", d.Range("A1"), d.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
s.Range(s.Cells(li.Row, 1), s.Cells(li.Row, 4)).Copy 'copie les références commerçant
dest.PasteSpecial (xlPasteValues) 'colle la valeur des références commerçant
s.Cells(li.Row, col).Copy 'copie la cellule
dest.Offset(0, 4).PasteSpecial (xlPasteValues) 'colle la valeur de la cellule
End If 'fin de la condition
Next col 'nouvelle colonne de la boucle 2
Next li 'nouvelle ligne de la boujcle 1
End Sub