Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim X As Integer 'déclare la variable X (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim TLAE() As Variant 'déclare la variable TLAE (Tableau des Lignes À Effacer)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set OS = Worksheets("Nouveau") 'définit l'onglet source OS
Set OD = Worksheets("Compensés") 'définit l'onglet destination OD
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les données du tableau TV (en partant de la ligne 2)
If TV(I, 8) = "Compensé - Soldé" Then 'condition : si la donnée ligne I colonne 8 (=> colonne H) du tableau des valeurs TV est égale à "Compensé - Soldé"
ReDim Preserve TL(1 To 10, 1 To K) 'redimensionne le tableau des lignes TL (10 lignes, K colonnes)
ReDim Preserve TLAE(1 To K) 'redimensionne le tableau des lignes à effacer TLAE (K lignes)
TLAE(K) = I 'récupère dans le tableau des lignes à effacer le numéro de la ligne I
For J = 1 To 10 'boucle 2 : sur les 10 colonnes du tableau des lignes TL
TL(J, K) = OS.Cells(I, J) 'récupere dans la ligne J de TL la valeur de la cellule en colonne J de l'onglet OS (= Transposition)
Next J 'prochaine colonne de la boucle 2
K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL et une ligne au tableau des lignes à effacer TLAE)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
If OD.Range("A2").Value = "" Then 'si la cellule A2 de l'onglet OD est vide
Set DEST = OD.Range("A2") 'définit la cellule de destination DEST (A2)
Else 'sinon
Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première cellule vide de la colonne A)
End If 'fin de la condition
DEST.Resize(UBound(TL, 2), 10).Value = Application.Transpose(TL) 'renvoie dans la cellule DEST redimensionnée le tableau TL transposé
For I = UBound(TLAE, 1) To LBound(TLAE, 1) Step -1 'boucle inversée sur toutes les données du tableau TLAE
OS.Rows(TLAE(I)).Delete 'efface la ligne de la boucle dans l'onglet source OS
Next I 'prochane donnée de la boucle
End Sub