Sub Macro1()
Dim dl As Integer 'décalre la variable dl (Dernièr Ligne)
Dim pl As Range 'décalre la variable pl (PLage)
Dim dest As Range 'décalre la variable dest (cellule de DESTination)
Application.ScreenUpdating = False 'masque les changements à l'écran
With Sheets("uyio") 'prend en compte l'onglet "uyio"
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = .Range("A3:D" & dl) 'définit la plage pl
.Range("A2").AutoFilter 'active le filtre automatique en A2
.Range("A2").AutoFilter field:=4, Criteria1:="<>" 'filtre automatique sur D2, critère : non vide
For x = 2 To Sheets.Count 'boucle sur tous les onglets du classeur (en partant du second)
With Sheets(x) 'prend en compte l'onghlet de la boucle
Set dest = .Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
pl.SpecialCells(xlCellTypeVisible).Copy dest 'copie et colle les cellules visibles de la plage pl dans dest
End With 'fin de la prise en compte de l'onghlet de la boucle
Next x 'prochain onglet de la boucle
pl.SpecialCells(xlCellTypeVisible).EntireRow.Delete shift:=xlShiftUp 'suprime les cellules visible de la plage pl
.Range("A2").AutoFilter 'supprime le filtre automatique
End With 'fin de la prise en compte de l'onglet "uyio"
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub