
Envoyé par
bzh.floriane
1 2 3 4
| Sub Macro1()
Dim FindTable As Range
...
Function FindTable() As Range |
Ca, c'est vraiment une très mauvaise idée.
Il y a des milliards de combinaisons possibles pour nommer une variable ou une fonction.
C'est vraiment vouloir se tirer une balle dans le pied que de donner le même à deux éléments différents.
Dans la suite des explication, je vais les renommer VFindTable et FFindTable pour les différencier.
Cependant, je ne dois pas avoir la bonne syntaxe pour retourner un paramètre, l'erreur est surement à la ligne : Set FindTable = Call FindTable.
Déjà, une Function ne s'appelle pas avec un Call. Le Call est plutôt réservé aux Sub.
De toute façon, le Call est une instruction, on ne peut pas le mettre à la suite d'un "=" pour l'assigner.
Une Function s'utilise comme une valeur ou une variable paramétrée.
La syntaxe correcte est Set VFindTable = FFindTable().
Autre détail, quand tu fais des opérations pour créer l'adresse d'un Range, ne soit pas avare de parenthèses pour lever les ambigüités.
Mais la principale erreur, c'est que tu as oublié le Set devant ton FindTable.
Set FFindTable = Workbooks("Classeur_travail.xlsx").Worksheets("Sheet2").Rows((CellFind.Row + 1) & ":" & (CellFind.Row + 6))
Personnellement, j'aurai plutôt écrit (question de goût) :
Set FFindTable = Workbooks("Classeur_travail.xlsx").Worksheets("Sheet2").Cells(CellFind.Row + 1, 1).Resize(6, 1).EntireRow
Il serait bon aussi, après ton Find, de contrôler si la recherche a été fructueuse avant d'utiliser CellFind, histoire de gérer proprement un bug éventuel.
Partager