Etrange difference d'effet entre vlookup en VBA et rechercherv en excel

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:

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.
 

skoobi

XLDnaute Barbatruc
Re : Etrange difference d'effet entre vlookup en VBA et rechercherv en excel

Bonjour Elephanfaron, bienvenue sur XLD,

As-tu essayé en déclarant "plage" en tant que Range?

Code:
Function retrieveData(value As Variant, plage As [COLOR=Blue][B]Range[/B][/COLOR], columnIndex As Integer) As Variant

PS: pour un premier post, je dirais que tu es dans le top 10 ;)
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Etrange difference d'effet entre vlookup en VBA et rechercherv en excel

Bonsoir Elephanfaron, salut skoobi,

La fonction VBA fonctionne très bien sur un fichier fermé, j'ai testé.

Mais il faut en effet déclarer plage As Variant, As Range n'est pas bon...

Bien sûr il faut que dans la feuille de calcul la plage soit définie avec son chemin d'accès.

Edit : il y a peut-être des problèmes avec le reste du code. J'ai simplement testé avec :

Code:
retrieveData = Application.WorksheetFunction.VLookup(value, plage, columnIndex, False)

A+
 
Dernière édition:

Elephanfaron

XLDnaute Nouveau
Re : Etrange difference d'effet entre vlookup en VBA et rechercherv en excel

Merci à vous deux pour vos réponses, et désolé de répondre aussi tard. Je suis un peu débordé en ce moment.
Problème hélas toujours pas résolu ! Comme suggéré j'ai essayé de supprimer le reste du code de ma fonction et de ne garder que le vlookup, mais ca ne fonctione toujours pas. J'ai essayé sur deux ordinateurs différents et le problème est le même: quand le fichier 2 avec les données à récupérer est ouvert, tout fonctionne; quand il est fermé, seul rechercherv fonctionne mais pas la fonction VBA...

Si quelqu'un a une autre idée je suis preneur (et j'ai du temps aujourd'hui et demain donc je pourrais tester et répondre rapidement !).
 

job75

XLDnaute Barbatruc
Re : Etrange difference d'effet entre vlookup en VBA et rechercherv en excel

Bonjour Elephanfaron,

La plage dans le fichier source doit être délimitée.

Voir les 2 fichiers joints.

Il faut les mettre dans un même dossier (répertoire), je les ai créés ainsi.

Chez moi Vlookup fonctionne avec le fichier Source fermé:)

A+
 

Pièces jointes

  • Source.xls
    21 KB · Affichages: 118
  • Source.xls
    21 KB · Affichages: 118
  • Source.xls
    21 KB · Affichages: 121
  • Fonction retrieveData (VLookup).xls
    33 KB · Affichages: 141

Elephanfaron

XLDnaute Nouveau
Re : Etrange difference d'effet entre vlookup en VBA et rechercherv en excel

Un très grand merci job !
Ça fonctionne désormais. Effectivement le problème venait bien du fait que la plage de données n'était pas délimitée (j'avais sélectionné toute le feuille source).
Faut que je mette "Résolu" qq part ?
 

Discussions similaires

Réponses
12
Affichages
252
Réponses
6
Affichages
248

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat