Sub Macro1()
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PLV (PLage Visible)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O2 = Sheets("Feuil3") 'définit l'onglet O2
Set PL = O1.Range("A1").CurrentRegion 'définit la palge PL
O1.Range("A1").AutoFilter Field:=2, Criteria1:="Camion" 'filtre a colonne 2 (=B) de l'onglet O1 avec "Camion" comme critère
O1.Range("A1").AutoFilter Field:=4, Criteria1:="<50" 'filtre a colonne 4 (=D) de l'onglet O1 avec "<50" comme critère
O1.Range("A1").AutoFilter Field:=5, Criteria1:=1 'filtre a colonne 5 (=E) de l'onglet O1 avec "1" comme critère
O1.Range("A1").AutoFilter Field:=12, Criteria1:="Essai" 'filtre a colonne 12 (=L) de l'onglet O1 avec "Essai" comme critère
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV des cellules visibles (non filtrées) de la plage PL (génère une erreur si aucune ligne visible)
If Err <> 0 Then 'condition : si une erreur a été genérée
Err.Clear 'supprime l'erreur
MsgBox "Aucune ligne ne correspond au critères !" 'message
Exit Sub 'sort de la procédure
End If 'fin de la condition
Set dest = O2.Range("B3") 'définit la cellule de destination DEST
dest.CurrentRegion.ClearContents 'supprime d'éventuelles anciennes données
Application.Intersect(PLV, O1.Columns(1)).Copy dest 'place les cellules visibles de la colonne 1 (=A) dans DEST
Application.Intersect(PLV, O1.Columns(5)).Copy dest.Offset(0, 1) 'place les cellules visibles de la colonne 5 (=E) dans DEST décalée d'une cellule à droite
Application.Intersect(PLV, O1.Columns(7)).Copy dest.Offset(0, 2) 'place les cellules visibles de la colonne 7 (=G) dans DEST décalée de deux cellules à droite
Application.Intersect(PLV, O1.Columns(4)).Copy dest.Offset(0, 3) 'place les cellules visibles de la colonne 4 (=D) dans DEST décalée de trois cellules à droite
Application.Intersect(PLV, O1.Columns(11)).Copy dest.Offset(0, 4) 'place les cellules visibles de la colonne 4 (=K) dans DEST décalée de quatre cellules à droite
O1.Range("A1").AutoFilter 'supprime le filtre automatique
Application.ScreenUpdating = False 'affiche les rafraîchissements d'écran
End Sub