Se connecter avec
S'enregistrer | Connectez-vous

recherche donnée dans classeur différent

Dernière réponse : dans Programmation

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
Lassé par la pub ? Créez un compte

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 :

  1. 'classeur actuel
  2. chemin_listeref = ActiveWorkbook.FullName
  3. nom_listeref = ActiveWorkbook.Name
  4.  
  5. 'ouverture 2eme classeur, choix de la feuille, sélection des colonnes concernées par la recherche que l'on nomme "base"
  6.  
  7. Workbooks.Open ("J:\répertoire\excel.xls")
  8. Sheets("2008").Select
  9. Columns("A:G").Select
  10. Selection.Name = "base"
  11. nom_classeabc = ActiveWorkbook.FullName
  12.  
  13. 'activation 1er classeur pour faire la recherche
  14. Workbooks(nom_listeref).Activate
  15. Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), base, 7, False)


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
Expert Programmation

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 :/ 

  1. Dim wb_abc As Workbook
  2.  
  3. Set wb_abc = Workbooks.Open("J:\répertoire\excel_abc.xls" )
  4. wb_abc.Sheets("2008").Columns("A:G").Name = "base"
  5.  
  6. Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), wb_abc.Range("Base"), 7, False)
  7.  
  8. wb_abc.Close SaveChange=False
  9. Set wb_abc = Nothing


Autre façon de faire :
  1. Dim wb_abc As Workbook
  2.  
  3. Set wb_abc = Workbooks.Open("J:\répertoire\excel_abc.xls" )
  4. Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), wb_abc.Range("A:G"), 7, False)
  5. wb_abc.Close SaveChange=False
  6. Set wb_abc = Nothing

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
Lassé par la pub ? Créez un compte