Bonjour à Tous,

Ce matin, je ne comprend pas le fonctionnement d'une de mes fonctions.
Celle ci utilise Find pour trouver des noms dans un onglet et retourner le matricule
Quand on trouve le nom, on test si la période est celle souhaité sinon on passe au suivant.


Les problèmes sont :
- Il ne trouve pas le suivant (alors qu'il existe) => rg =nothing au 2eme tour
- dans le loop While il sort de la fonction et retourne #VALEUR


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
Function Matricule(Nom As String, Periode As Long) As Long
 
Dim sh As Worksheet
Dim Rg As Range
Dim Ad As String
 
Set sh = Sheets("Donnees")
 
Set Rg = sh.Range("B:B").Find(Nom, LookIn:=xlValues, lookat:=xlWhole)
 
If Not Rg Is Nothing Then
    Ad = Rg.Address
    Do
        If Rg.Offset(0, 2).Value = Periode Then
            Matricule = Rg.Offset(0, -1).Value
            Exit Function
        End If
        Set Rg = sh.Range("B:B").FindNext(Rg)
    Loop While Not Rg Is Nothing And Rg.Address <> Ad
 
End If
 
Matricule = 0
 
End Function
Ce matin, mes yeux ne sont peut etre pas en face des trous (week end très arrosé)

EDIT : la fonction fonctionne pour le premier nom trouvé