Sub macro1()
Dim tablo() As Variant 'déclare le tableau de variables tablo
Dim dest As Range 'déclare la variable dest (DESTination)
Dim x As Byte, y As Byte 'déclare les variable x et y
Sheets("Matrice").Range("A7:AB21").Copy 'copie la plage A7:AB21
'collage spécial
Sheets("BD").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.ClearContents 'efface le contenu de la plage
Set dest = ActiveCell 'définit la variable del
dest.Select 'sélectionne la cellule dest
x = 0 'définit l avariable x
y = 0 'définit l avariable y
For Each cel In Sheets("Matrice").Range("A7:AB21") 'boucle sur toutes le cellules de la plage A7:AB21 de l'onglet "Matrice"
If y > 27 Then 'condition 1 : si y est supérieur à 27
y = 0 'y se réinitialise à zéro
x = x + 1 'x s'incrémente de 1
End If 'fin de la condition 1
If cel.Value <> "" Then 'condition 2 : si la cellule cel n'est pas vide
ReDim tablo(x, y) 'redimensionne le tableau de variable tablo en fonction de x et de y
tablo(x, y) = cel.Value 'attribue une valeur à la variable indexée (x,y)
dest.Offset(x, y).Value = tablo(x, y) 'place cette valeur dans l'onglet "BD"
y = y + 1 'redéfinit la variable y
End If 'fin de la condition 2
Next cel 'prochaine cellule de la boucle
End Sub