Sub Macro1()
Dim dl3 As Integer 'déclare la variable dl3 (dernière Ligne de l'onglet Feuil3)
Dim pl3 As Range 'déclare la variable pl3 (Plage de l'onglet Feuil3)
Dim dl4 As Integer 'déclare la variable dl4 (dernière Ligne de l'onglet Feuil4)
Dim pl4 As Range 'déclare la variable pl4 (Plage de l'onglet Feuil4)
Dim cel As Range 'déclare la variable cel (CELlule)
With Sheets("Feuil3") 'prend en compte l'onglet "Feuil3"
dl3 = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
Set pl3 = .Range("A2:A" & dl3) 'définit la plage pl3
End With 'fin de la prise en compte de l'onglet "Feuil3"
With Sheets("Feuil4") 'prend en compte l'onglet "Feuil3"
dl4 = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
Set pl4 = .Range("A5:A" & dl4) 'définit la plage pl4
End With 'fin de la prise en compte de l'onglet "Feuil4"
For Each cel In pl4 'boucle 1 : sur toutes les cellules cel de la plage pl4
With Sheets("Feuil3") 'prend en compte l'onglet "Feuil3"
.Range("A1").AutoFilter 'active le filtre automatique en A1
For x = 1 To 4 'boucle 2 : sur les quatre critères des colonnes A, B, C et D
.Range("A1").AutoFilter field:=x, Criteria1:=cel.Offset(0, x - 1).Value 'filtre la colonne para rapport à la valeur de la cellule
Next x 'prochain critère de la boucle 2
If pl3.SpecialCells(xlCellTypeVisible).Cells.Count = 1 Then 'condition : si une seule ligne de la plage pl3 est visible
cel.Offset(0, 4).Copy pl3.SpecialCells(xlCellTypeVisible).Offset(0, 5) 'récupère le nb_1
cel.Offset(0, 5).Copy pl3.SpecialCells(xlCellTypeVisible).Offset(0, 7) 'récupère le nb_3
End If 'fin de la condition
.Range("A1").AutoFilter 'désactive le filtre automatique en A1
End With 'fin de la prise en compte de l'onglet "Feuil3"
Next cel 'prochaine cellule de la boucle 1
End Sub