recherche donnée dans classeur différent

  • Auteur de la discussion quentrinbach
  • Date de début

quentrinbach

Nouveau membre
Bonjour à tous,

Je rencontre un problème particulièrement prise de tête : je cherche à réaliser une recherche en vba (type rechercheV) dans un classeur différent non ouvert, et situé dans un répertoire différent. je ne souhaite pas particulièrement ouvrir ce 2eme classeur (sauf si c'est vraiment obligé).

si j'écris la formule recherchev directement dans excel, ca marche sans problème, mais je souhaite mettre tout ça en VBA pour une raison trop compliqué à expliquer.

voici la formule :

Cells(i, 15) = "=RECHERCHEV(LC(-14);'J:\répertoire\[excel.xls]feuille1'!C1:C7;7;FAUX)"

j'ai retourné le probleme dans tous les sens, impossible à trouver le truc.

Merci par avance
 

zeb

Modérateur
La fonction RECHERCHEV s'appelle en fait VLookup.
Pour l'utiliser en VBA/Excel, utilise WorksheetFunction.VLookup.
 

quentrinbach

Nouveau membre
Bonjour,

Merci beaucoup pour l'info, mais j'arrive pas a le mettre en place, j'ai bidouillé un peu, en ouvrant le 2eme fichier excel avant de faire ma recherche et en attribuant des noms aux différents classeurs, ca donne ca :

[cpp]
'classeur actuel
chemin_listeref = ActiveWorkbook.FullName
nom_listeref = ActiveWorkbook.Name

'ouverture 2eme classeur, choix de la feuille, sélection des colonnes concernées par la recherche que l'on nomme "base"

Workbooks.Open ("J:\répertoire\excel.xls")
Sheets("2008").Select
Columns("A:G").Select
Selection.Name = "base"
nom_classeabc = ActiveWorkbook.FullName

'activation 1er classeur pour faire la recherche
Workbooks(nom_listeref).Activate
Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), base, 7, False)
[/cpp]

c'est de la bidouille, ca marche pas et ca m'énerve !!!!!
auriez vous deux ou trois indications ? En fait j'arrive pas a comprendre comment marche le Vlookup. si quelqu'un a juste la syntaxe, ca m'arrangerait

merci beaucoup
 

quentrinbach

Nouveau membre
Désolé zeb, pas l'habitude des forums. Je suppose sue tu faisais référence aux balises et aux données perso que j'avai oublié d'effacer ?

bonne journée
 

zeb

Modérateur
Maintenant que je prends la peine de lire ton code ;) Quelle horreur !

Je déteste les SELECTs. (Tu n'as qu'à chercher zeb+vba+select/selection dans google pour t'amuser. :D) Puisque tu utilises plusieurs classeurs, nomme-les explicitement.
Ne pas mettre de parenthèses pour entourer un paramètre de procédure (ligne 7)

UTILISER L'OPTION EXPLICIT.
Une grande partie de tes problèmes disparaîtra. (l'erreur de la ligne 15, notamment).

Le deuxième paramètre de VLookup est un Range. Toi tu y a mis... une variable non initialisée :/

Code:
Dim wb_abc As Workbook

Set wb_abc = Workbooks.Open("J:\répertoire\excel_abc.xls" )
wb_abc.Sheets("2008").Columns("A:G").Name = "base"

Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), wb_abc.Range("Base"), 7, False)

wb_abc.Close SaveChange=False
Set wb_abc = Nothing

Autre façon de faire :
Code:
Dim wb_abc As Workbook

Set wb_abc = Workbooks.Open("J:\répertoire\excel_abc.xls" )
Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), wb_abc.Range("A:G"), 7, False)
wb_abc.Close SaveChange=False
Set wb_abc = Nothing
 

quentrinbach

Nouveau membre
Alors la je n'ai qu'une chose à dire .... chapeau. :bounce:

Merci beaucoup, j'ai pu me débrouiller avec tout ça, ca marche du tonnerre, et je vais retenir la fonction vlookup dans un coin ca va resservir.

Et la prochaine fois, j'éviterai les Select pour ne pas m'attirer les foudres du gourou :D

encore merci
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 043
Membres
1 586 281
Dernier membre
moto45ktm
Partager cette page
Haut