Elephanfaron
XLDnaute Nouveau
Bonjour a tous !
Un étrange problème que je n'arrive pas a résoudre :
Mon premier fichier excel contient des données. Au sein d'un deuxième fichier je cherche a faire une recherche dans ces données avec la fonction rechercherv.
Cela fonctionne parfaitement avec l'instruction:
=RECHERCHERV(value; NOM_PLAGE; NOM_COLONNE; FAUX)
(NOM_PLAGE et NOM_COLONNE sont des noms définis dans le deuxième fichier, et font directement référence au premier)
Je voulais faire la même chose en VBA, en utilisant la fonction "VLookup". Je tape donc le code suivant:
Et dans excel je tape maintenant :
=retrieveData(value; NOM_PLAGE; NOM_COLONNE)
Autant dire que je n'ai a priori rien change. Pourtant les choses deviennent étrange: la fonction VBA fonctionne uniquement quand le fichier 1 contenant les données est ouvert, mais pas quand il est fermé. La méthode directe dans excel avec RECHERCHERV fonctionne dans les deux cas.
Pourquoi cette différence ?
En debuggant dans VBA il semblerait que le problème vienne de "plage", qui vaut "Error 2036" au moment ou je lance VLookup (évidemment uniquement dans le cas ou le fichier 1 est ferme). "columnIndex" a quant a lui correctement été récupéré. Je precise que NOM_PLAGE fait reference a tout le tableau d'une des feuille du fichier 1.
Voila j'espère que je suis a peu près clair et que j'ai respecte les règles du forum pour mon premier post !
Merci d'avance pour votre aide.
Un étrange problème que je n'arrive pas a résoudre :
Mon premier fichier excel contient des données. Au sein d'un deuxième fichier je cherche a faire une recherche dans ces données avec la fonction rechercherv.
Cela fonctionne parfaitement avec l'instruction:
=RECHERCHERV(value; NOM_PLAGE; NOM_COLONNE; FAUX)
(NOM_PLAGE et NOM_COLONNE sont des noms définis dans le deuxième fichier, et font directement référence au premier)
Je voulais faire la même chose en VBA, en utilisant la fonction "VLookup". Je tape donc le code suivant:
Code:
Function retrieveData(value As Variant, plage As Variant, columnIndex As Integer) As Variant
Dim result As Variant
result = Application.WorksheetFunction.VLookup(value, plage, columnIndex, False)
'differents tests sur result avant de retourner une valeur
End Function
Et dans excel je tape maintenant :
=retrieveData(value; NOM_PLAGE; NOM_COLONNE)
Autant dire que je n'ai a priori rien change. Pourtant les choses deviennent étrange: la fonction VBA fonctionne uniquement quand le fichier 1 contenant les données est ouvert, mais pas quand il est fermé. La méthode directe dans excel avec RECHERCHERV fonctionne dans les deux cas.
Pourquoi cette différence ?
En debuggant dans VBA il semblerait que le problème vienne de "plage", qui vaut "Error 2036" au moment ou je lance VLookup (évidemment uniquement dans le cas ou le fichier 1 est ferme). "columnIndex" a quant a lui correctement été récupéré. Je precise que NOM_PLAGE fait reference a tout le tableau d'une des feuille du fichier 1.
Voila j'espère que je suis a peu près clair et que j'ai respecte les règles du forum pour mon premier post !
Merci d'avance pour votre aide.