RechercheV sur un fichier externe sans connaitre completement le nom du classeur

Sophie11

XLDnaute Occasionnel
Bonjour,

Pouvez-vous m'indiquer le code pour effectuer un rechercheV de donnée dont le tableau a chercher se situe dans un autre classeur.

Ce classeur est ouvert mais change de nom régulierement sauf le début.

Exemple:
Soit 2 classeurs ouvert :

data_a_chercher_XXXX.xls (XXXX change regulierement)
fichier_principal.xls


je travaille sur fichier_principal.xls et je sous effectuer un recherchev dont les données à chercher sont sur data_a_chercher_XXXX.xls
Je voudrais savoir si il est possible de faire une recherche en connaissant simplement le début du nom du fichier à chercher => data_a_chercher_*.xls

merci d'avance

Sophie
 

R@chid

XLDnaute Barbatruc
Re : RechercheV sur un fichier externe sans connaitre completement le nom du classeur

Bonsoir Sophie,
Voir PJ,
@ l'aide d'une Macro XL4 on peut avoir tout les classeurs ouverts...
et @ l'aide de la fonction INDIRECT() on peut choisir le classeur sur lequel on va faire la recherche
Amicalement
 

Pièces jointes

  • Sophie.xlsm
    10.2 KB · Affichages: 55
  • Sophie.xlsm
    10.2 KB · Affichages: 57
  • Sophie.xlsm
    10.2 KB · Affichages: 58

job75

XLDnaute Barbatruc
Re : RechercheV sur un fichier externe sans connaitre completement le nom du classeur

Bonjour Sophie11, R@chid,

Voyez les fichiers joints avec cette fonction macro :

Code:
Function RECH(fichier$, Feuil$, col1, col2, valeur)
Dim wb As Workbook, lig As Variant
For Each wb In Workbooks
  If fichier <> "" And wb.Name Like fichier & "*" Then Exit For
Next
If wb Is Nothing Then RECH = "Fichier ??": Exit Function
On Error Resume Next
If IsError(wb.Sheets(Feuil)) Then RECH = "Feuille ??": Exit Function
If Not Val(col1) Then col1 = CStr(col1)
If Not Val(col2) Then col2 = CStr(col2)
If IsError(wb.Sheets(Feuil).Columns(col1)) Or _
  IsError(wb.Sheets(Feuil).Columns(col2)) Then _
  RECH = "Colonne ??": Exit Function
lig = Application.Match(valeur, wb.Sheets(Feuil).Columns(col1), 0)
If IsError(lig) Then RECH = lig: Exit Function
RECH = wb.Sheets(Feuil).Cells(lig, Columns(col2).Column)
End Function
A+
 

Pièces jointes

  • fichier_principal(1).xls
    39 KB · Affichages: 34
  • data_a_chercher_07.12.12.xls
    20 KB · Affichages: 38

job75

XLDnaute Barbatruc
Re : RechercheV sur un fichier externe sans connaitre completement le nom du classeur

Re,

Si le tableau où se fait la recherche est nommé c'est plus simple :

Code:
Function RECH(fichier$, tablo$, col%, valeur)
Dim wb As Workbook, t
For Each wb In Workbooks
  If fichier <> "" And wb.Name Like fichier & "*" Then Exit For
Next
If wb Is Nothing Then RECH = "Fichier ??": Exit Function
On Error Resume Next
If IsError(wb.Names(tablo)) Then RECH = "Tableau ??": Exit Function
t = Evaluate("'" & wb.Name & "'!" & tablo)
RECH = Application.VLookup(valeur, t, col, 0)
End Function
Fichiers (2).

A+
 

Pièces jointes

  • fichier_principal(2).xls
    38 KB · Affichages: 33
  • data_a_chercher_07.12.12(2).xls
    28 KB · Affichages: 35

job75

XLDnaute Barbatruc
Re : RechercheV sur un fichier externe sans connaitre completement le nom du classeur

Re,

Pour que la fonction ressemble à RECHERCHEV, je l'ai renommée et mis l'argument valeur au début :

Code:
Function RECHV(valeur, fichier$, tablo$, col%)
Fichiers (3).

A+
 

Pièces jointes

  • fichier_principal(3).xls
    38 KB · Affichages: 47
  • data_a_chercher_07.12.12(3).xls
    28 KB · Affichages: 46

Discussions similaires

Statistiques des forums

Discussions
312 514
Messages
2 089 226
Membres
104 069
dernier inscrit
kit.survie