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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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