Sub Macro2()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OS = Worksheets("indexation") 'définit l'onglet source OS
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OS
TV = OS.Range("A1:I" & DL) 'définit le tabvleau des valeurs TV
For I = 3 To DL 'boucle sur toutes les lignes I du tableau des valeurs TV (en partqant de la troisième)
If Not UCase(TV(I, 9)) = "X" Then 'condition : si la donnée ligne I colonne 9 (=> colonne I) ne vaut ni "X" ni "x"
Set OD = Worksheets(TV(I, 3)) 'définit l'onglet destination OD
'définit la cellule de destination DEST (première cellule vide de la colonne A de l'onglet OD)
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
OS.Cells(I, 1).Resize(1, 8).Copy DEST 'copie les 8 cellules de la ligne de la boucle l'onglet source et les colle dans DEST
OS.Cells(I, "I").Value = "X" 'écrit X dans la cellule ligne I colonne "I"
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub