Sub Macro1()
Dim ls As Object 'déclare la variable ls (onglet Liste Salariés)
Dim rs As Object 'déclare la variable rs (onglet Recap Salariés)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set ls = Sheets("Liste Salariés") 'définit l'onglet ls
Set rs = Sheets("Recap salariés") 'définit l'onglet rs
dl = ls.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A) de l'onglet ls
Set pl = ls.Range("A2:A" & dl) 'définit la plage pl
If ls.FilterMode = False Then ls.Range("A1").AutoFilter 'si le filtre automatique n'est pas actif, active le filtre automatique
ls.Range("A1").AutoFilter field:=9, Criteria1:="x" 'filtre la colonne I avec "x" (ou "X") comme critère
Set dest = rs.Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
'copy les cellules visibles de la plage pl redimensionnée jusqu'à la colonne H dans la cellule des destination dest
pl.Resize(pl.Rows.Count, 8).SpecialCells(xlCellTypeVisible).Copy dest
ls.Range("A1").AutoFilter 'désactive le filtre automatique
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub