Bonjour Michel
Sub ExtraireNouveauxClients()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim dict As Object
Dim i As Long, lastRow1 As Long, lastRow2 As Long, lastCol2 As Long
Dim clientNum As String
' Définir les feuilles
Set ws1 = ThisWorkbook.Sheets("Feuille1")
Set ws2 = ThisWorkbook.Sheets("Feuille2")
Set ws3 = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws3.Name = "NouveauxClients"
' Créer un dictionnaire pour stocker les numéros de clients de la feuille 1
Set dict = CreateObject("Scripting.Dictionary")
' Obtenir le dernier numéro de ligne de la feuille 1
lastRow1 = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
' Remplir le dictionnaire avec les numéros de clients de la feuille 1
For i = 1 To lastRow1
clientNum = ws1.Cells(i, 1).Value
If Not dict.exists(clientNum) Then
dict.Add clientNum, Nothing
End If
Next i
' Obtenir le dernier numéro de ligne et de colonne de la feuille 2
lastRow2 = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row
lastCol2 = ws2.Cells(1, ws2.Columns.Count).End(xlToLeft).Column
' Copier les en-têtes de la feuille 2 à la feuille 3
ws2.Range(ws2.Cells(1, 1), ws2.Cells(1, lastCol2)).Copy Destination:=ws3.Cells(1, 1)
' Parcourir les lignes de la feuille 2 et copier les lignes correspondantes à la feuille 3
For i = 2 To lastRow2
clientNum = ws2.Cells(i, 1).Value
If dict.exists(clientNum) Then
ws2.Range(ws2.Cells(i, 1), ws2.Cells(i, lastCol2)).Copy Destination:=ws3.Cells(ws3.Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next i
' Nettoyer
Set dict = Nothing
Set ws1 = Nothing
Set ws2 = Nothing
Set ws3 = Nothing
End Sub