Soucis avec la méthode Find
Bonjour à tous,
Je viens soumettre un problème qui me fait m'arracher les cheveux à mon poste depuis quelques temps et qui demeure complètement insolvable...
Une procédure qui fonctionnait auparavant sans problème ne remplissait plus son rôle. Après investigation, j'ai trouvé qu'une instruction range.Find renvoyait Nothing
Je ponds environ 3-4 versions différentes d'un même fichier excel tous les jours. J'ai donc repris les versions antérieurs sur lesquelles la procédure fonctionnait parfaitement. Ô surprise, même résultat. Même avec les versions vieilles de plusieurs jours où je peux mettre ma main à couper que ça marchait !
Voici le morceau de code incriminé :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Public Function recherche_data_par_UID(feuille As Integer) As Range
Dim plage_recherche As Range
Dim occurence As Range
Dim what As Long
'Recherche des plages correspondant à l'UID
Set plage_recherche = Application.Intersect(ThisWorkbook.Worksheets(feuille).Columns(1), ThisWorkbook.Worksheets(feuille).UsedRange)
UID = ThisWorkbook.Worksheets("Recherche_collab").Range("C2").Value
Set occurence = plage_recherche.Find(what:=UID, Lookat:=xlWhole, MatchCase:=False)
[...] |
Tout devrait pourtant fonctionner à merveille comme en témoigne ce morceau de code que j'ai rajouté juste en dessous pour effectuer un test :
Code:
1 2 3 4 5
|
Debug.Print plage_recherche.Address(external:=True)
Debug.Print ThisWorkbook.Worksheets("Data_ID").Cells(125, 1).Address(external:=True)
Debug.Print UID = ThisWorkbook.Worksheets("Data_ID").Cells(125, 1).Value
Debug.Print plage_recherche.Find(what:=UID) Is Nothing |
Qui ressort comme résultat sur la console :
Code:
1 2 3 4 5
|
'[BDD Collaborateurs V6.0.xls]Data_ID'!$A$1:$A$1001
'[BDD Collaborateurs V6.0.xls]Data_ID'!$A$125
Vrai
Vrai |
La cellule(1,125) appartient bien à la plage, elle a bien la même valeur, mais le résultat de la méthode Find est Nothing...
Voilà... Je pense que le problème vient de l'environnement, mais je ne suis pas expert en VBA donc je ne m'en sors pas...
En espérant que quelqu'un ait la bonté de me sortir de là, je vous souhaite une bonne soirée