Bonjour à tout le monde,
J'ai un problème avec une fonction que j'utilise comme formule dans une feuille de calcul. J'ai fait une recherche sur le forum mais je ne trouve pas de sujet relatif à mon problème.
J'ai une feuille "Data" avec 3 colonnes.
La première colonne est code1, les cellules de cette colonne contiennent un caractère: A, B, C, D, ...
La deuxième colonne est code2, les cellules de cette colonne contiennent un caractère: a, b, c, d, ...
La troisième colonne est valeur, il s'agit d'une valeur numérique.
Les combinaisons code1 + code2 sont uniques.
Sur une autre feuille, j'introduis dans une cellule la valeur "A" pour code1 et dans une autre cellule "c" pour code2, j'aimerai que ma fonction me retourne la valeur qui correspond à la combinaison A c qui est définie dans la feuille "data".
Ci-dessous, mon code:
Si j'utilise, par exemple, la formule =RCHVAL(A1;B1) dans n'importe quelle cellule, j'ai le message d'erreur #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 Function Rchval(Texte1, Texte2) Dim CelluleTrv As Range 'Cellule trouvé lors de la recherche Dim FirstAddress As String 'Adresse de la première cellule trouvée Dim Plage As Range Set Plage = Worksheets("Data").Columns(1) Set CelluleTrv = Plage.Find(Texte1) If Not CelluleTrv Is Nothing Then FirstAddress = CelluleTrv.Address 'Initialisation de l'adresse de la première cellule trouvée Do 'Boucle pour analyser les autres résultats trouvés If Worksheets("Data").Cells(CelluleTrv.Row, 2).Value = Texte2 Then Valeur = Worksheets("Data").Cells(CelluleTrv.Row, 3).Value 'Valeur de la cellule trouvée End If Set CelluleTrv = Plage.FindNext(CelluleTrv) 'Recherche les autres résultats Loop While CelluleTrv.Address <> FirstAddress 'Continue la boucle tant que l'adresse est différent de la première adresse trouvée End If Rchval = Valeur End Function
Si j'utilise la fonction dans une procédure sub, j'obtiens le bon résultat.
Pour info, la fonction est bien définie dans un module et non pas dans le code d'une feuille de calcul ou dans ThisWorkbook.
J'ai essayé de Debugger, j'ai mis des points d'arrêt dans le code.
Il semble que ça coince au niveau du Set CelluleTrv = Plage.FindNext(CelluleTrv) , CelluleTrv devient Nothing , alors qu'une même valeur est présente plusieurs fois dans la colonne1.
Je ne comprends pas ce qui se passe. Je commets peut-être une grossière erreur! Bref, je suis coincé et je sollicite votre assistance.
Merci d'avance pour vos réponses.
Partager