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
Ce matin, mes yeux ne sont peut etre pas en face des trous (week end très arrosé)
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![]()
EDIT : la fonction fonctionne pour le premier nom trouvé
Partager