Bonjour le forum,

Après avoir cherché un bon petit moment, je m'en remet encore une fois à la sagesse des membres de ce forum .

Donc, j'ai encore un petit problème avec un bout de code que je dois implémenté. En gros, j'ai une feuille "BDD" contenant des données de pointage avec une colonne nom salarié et une feuille salarié référencent tous les salarié déjà dans la base de donnée. A chaque fois que des nouvelles données sont importé (d'un fichier .xml pour précision), un test est effectué pour savoir si l'employé est déjà dans la feuille Salarié. Et c'est la le problème, les génies qui ont entré le nom des salariés dans le fichier xml ont utilisé des intitulés (M. ; Mr ; Mme ; Melle) et certaine personne, d'un fichier à un autre peuvent avoir un intitulé différent.

Par exemple :

Fichier A :

M. Toto Albert

Fichier B :

Mr Toto Albert

Cela pose un problème puisque lors d'analyse des données et la génération des différents graphiques, la personne sera scindé en deux (moins d'heures sup donc moins de paye ), également, deux entrées seront créer dans la feuille salarié. Je vous met le code qui recherche les nouveaux salarié pour que vous puissiez visualiser et en vient à la question : Comment faire pour que Excel ne prennent pas en compte les x premiers caractères ?

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
Public tab_salarie() As Variant
 Public tab_bdd() As Variant
 Public compteur_bdd As Integer
 Public compteur_salarie As Integer
 
Public Sub nouveau_salarie()
 
 
    Dim nbLigne_bdd As Long
    Dim nbLigne_salarie As Integer
    Dim plage_salarie As Range
    Dim plage_bdd As Range
 
 
    With Worksheets("BDD")
        nbLigne_bdd = .Range("A" & .Rows.Count).End(xlUp).Row
    End With
 
    With Worksheets("Salarie")
        nbLigne_salarie = .Range("A" & .Rows.Count).End(xlUp).Row
    End With
 
    Set plage_salarie = Worksheets("Salarie").Range(Worksheets("Salarie").Cells(1, 1), Worksheets("Salarie").Range("A1").End(xlDown).Offset(1, 0))
    Set plage_bdd = Worksheets("BDD").Range(Worksheets("BDD").Cells(1, 1), Worksheets("BDD").Range("A1").End(xlDown).Offset(1, 0))
 
    tab_salarie() = Application.Transpose(plage_salarie.Value)
    tab_bdd() = Application.Transpose(plage_bdd.Value)
 
    compteur_bdd = 1
 
boucle_bdd:
 
 
    Do While compteur_bdd <= nbLigne_bdd
 
        compteur_bdd = compteur_bdd + 1
 
        If tab_bdd(compteur_bdd) = tab_bdd(compteur_bdd - 1) Then
 
        GoTo boucle_bdd
 
        End If
 
 
        compteur_salarie = 1
 
        Do While compteur_salarie <= nbLigne_salarie
 
            If tab_bdd(compteur_bdd) = tab_salarie(compteur_salarie) Then
 
                GoTo boucle_bdd
 
 
 
 
            Else
                compteur_salarie = compteur_salarie + 1
                'GoTo boucle_bdd
 
            End If
 
        Loop
 
        NouveauSalarie.Show
 
 
    Loop
 
 
End Sub
Merci pour vos réponses,

Thomas