Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim col As Byte 'déclare la variable col (COLonne)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
For col = 2 To 13 'boucle 1 : sur les colonnes 2 à 13
'définit la dernière ligne dl (si col=2, dl =35, sinon, la ligne suivante la dernière ligné éditée de la colonne précédente)
dl = IIf(col = 2, 35, Cells(Application.Rows.Count, col - 1).End(xlUp).Row + 1)
For Each cel In Range("A3:A29") 'boucle 2 : sur toutes les cellules de la plage A3:A29
If cel.Offset(0, col - 1) <> 0 Then 'condition : si la cellule de la colonne col n'est pas vide
cel.Copy 'copie la cellule
'la colle dans la cellule (ligne dl, colonne col) agrandie d'autant de lignes que la valeur de la colonne col
Cells(dl, col).Resize(cel.Offset(0, col - 1).Value).PasteSpecial
dl = dl + cel.Offset(0, col - 1).Value 'redéfinit la dernière ligne dl
End If 'fin de la colndition
Next cel 'prochaine cellule de la boucle 2
Next col 'prochaine colonne de la boucle 1
End Sub