Bonjour à tous, je dois faire un fichier comparant deux fichier de personnes afin de trouver les personnes qui manquent dans le premier fichier par rapport aux deuxieme, étant donné qu'il y a souvent des fautes d'ortographe je fais le lien grace au matricule des personnes (dans un des fichiers il n'y a que la fin du matricule qui est présente et le nombre de caractère présent peut varier, par conséquent j'utilise une fonction calculant le nombre de caractères dans le matricule et une autre comparant que les X derniers caractères du matricule de l'autre liste correspond ou non au premier matricule) cependant mon code ne fonctionne pas, au lieu de me retourner uniquement les personnes absentes du fichier il me retourne toutes les personnes présentes dans le fichier
ça fait plusieurs heures que je calle alors j'éspère que vous pourrez m'aider

Cordialement

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Sub controle_effectif()
 
Dim i As Integer
Dim j As Integer
Dim finrh As Integer
Dim fincascade As Integer
Dim caractere As Integer
Dim finlist As Integer
Dim anomalie As Boolean
 
finrh = Sheets("rh").Range("B" & Rows.Count).End(xlUp).Row
fincascade = Sheets("cascade").Range("B" & Rows.Count).End(xlUp).Row
 
    For i = 3 To finrh
 
        caractere = Len(Sheets("rh").Range("D" & i))
 
 
            For j = 2 To fincascade
 
                If (Sheets("rh").Range("D" & i) = Right(Sheets("cascade").Range("A" & j), caractere) And caractere <> 0) Then
 
                anomalie = False
 
                Exit For
 
                End If
 
                If (Sheets("rh").Range("D" & i) <> Right(Sheets("cascade").Range("A" & j), caractere) And caractere <> 0) Then
 
                anomalie = True
 
                End If
 
 
                If (caractere = 0) Then
 
                    finlist = Sheets("controle effectif").Range("A" & Rows.Count).End(xlUp).Row + 1
                    Sheets("controle effectif").Range("A" & finlist) = Sheets("rh").Range("F" & i) & " " & "Matricule manquant"
 
                Exit For
 
                End If
 
 
            Next
 
        If (anomalie = True) Then
            finlist = Sheets("controle effectif").Range("A" & Rows.Count).End(xlUp).Row + 1
            Sheets("controle effectif").Range("A" & finlist) = Sheets("rh").Range("F" & i)
 
        End If
 
    Next
 
End Sub