Sub essaipapou()
Dim lgCibles ' Dictionnaire contenant les n° de lignes à recopier
Dim nSource() As String ' Tableau stockant les données des colonnes A:B de la feuille Compil_validations
Dim nCible() As String ' Tableau stockant les données des colonnes A:B de la feuille Pertes
Dim dlgS As Long, dlgC As Long ' Variables stockant les dernières lignes des deux feuilles
Dim celExist As Boolean ' Variable définissant si une ligne existe déjà dans la feuille Pertes
Set lgCibles = CreateObject("Scripting.dictionary")
dlgS = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
dlgC = Feuil2.Range("A" & Rows.Count).End(xlUp).Row
ReDim nSource(0 To dlgS - 1, 1 To 2)
ReDim nCible(0 To dlgC - 1, C1 To 2)
Application.ScreenUpdating = False ' Suspend le rafraîchissement d'écran
' Remplissage des tableaux Source et Cible
For s = 2 To dlgS
nSource(s - 2, 1) = Feuil1.Range("A" & s)
nSource(s - 2, 2) = Feuil1.Range("B" & s)
Next
For c = 4 To dlgC
nCible(c - 4, 1) = Feuil2.Range("A" & c)
nCible(c - 4, 2) = Feuil2.Range("B" & c)
Next
' Comparaison des données source et cible
For s = 2 To UBound(nSource)
celExist = False
For c = 2 To UBound(nCible)
If nSource(s - 2, 1) & nSource(s - 2, 2) = nCible(c - 2, 1) & nCible(c - 2, 2) Then
celExist = True
Exit For
End If
Next
' Enregistrement des n° de ligne à ajouter en feuille Pertes en évitant les doublons
If celExist = False Then
If Not lgCibles.exists(s) Then lgCibles.Add s, s
End If
Next
' Boucle d'ajout des données manquantes en feuille Pertes
For Each d In lgCibles.items
dlgC = Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1
Feuil2.Range("A" & dlgC & ":B" & dlgC).Value = Feuil1.Range("A" & d & ":B" & d).Value
Next
' Tri des données
Sheets("Pertes").Select
Range("A3:BW" & Range("A65536").End(xlUp).Row).Select
Selection.Sort Key1:=Range("A3"), order1:=xlAscending, Header:=xlYes, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
Application.ScreenUpdating = True
End Sub