Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

RechercheV qui va chercher dans un lien hypertexte

mexitinoco

XLDnaute Nouveau
Bonjour à tous,

Je bute depuis quelques jours sur un problème : j'ai 2 fichiers Excel, l'un contenant les données sources, et l'autre allant chercher automatiquement ces mêmes données avec une fonction RechercheV.
Ce que j'aimerais bien faire, c'est coller le lien hypertexte vers le fichier source dans mon 2e fichier, et que toutes mes formules RechercheV se réfèrent à ce lien hypertexte pour aller chercher les données. Le problème est que j'ai l'impression qu'Excel ne prend pas en compte les liens hypertexte comme argument pour "Table_matrice", lorsqu'on fait une RechercheV.

Est-il possible donc d'entrer un lien hypertexte en "table_matrice" ? ou alors ne serait-ce qu'un texte qui permette d'aller chercher dans le bon fichier ?

J'espère que l'explication est claire, merci de vos retours !
 

Pièces jointes

  • Fichier_source.xlsx
    9.7 KB · Affichages: 18
  • Lien_hypertexte.xlsx
    10.8 KB · Affichages: 21

Amilo

XLDnaute Accro
Bonjour mexitinoco, le forum,
Merci mexitinoco pour votre retour, heureux que vous ayez trouvé la solution qui vous convienne,
Cordialement
 

mexitinoco

XLDnaute Nouveau
Comme promis voici ma solution :
VB:
Sub copier_tableau_pas_machine_SpinAccess()

Dim classeurSource As Workbook, classeurDestination As Workbook

'ouvrir le classeur source (en lecture seule)
Set classeurSource = Application.Workbooks.Open(Range("D15"), , True)
'définir le classeur destination
Set classeurDestination = ThisWorkbook

'copier les données de la "FORMATS" du classeur source (FLG) vers la "FORMATS" du classeur destination
classeurSource.Sheets("verification").Range("R2:AE19").Copy classeurDestination.Sheets("Data").Range("B31")

'fermer le classeur source
classeurSource.Close False

End Sub

La macro ouvre le fichier source dont j'ai mis le lien en cellule D15, puis copie le tableau de R2 à AE19 dans le fichier source, pour l'importer en cellule B31 dans mon classeur destination. Ensuite je n'ai plus qu'à adapter mes formules RechercheV dans mon classeur destination pour qu'elles aillent chercher dans le tableau que j'ai importé.

Au final ça revient au même en nombre de manipulations que ce que je voulais faire au départ : il y a juste à changer en cellule D15 le fichier source duquel on veut extraire, appuyer sur le bouton de la macro et le tour est joué, les formules recherchev font le reste. Après là ça marche bien pour mon cas car mes différents fichiers sources ont tous la même structure (donc la matrice de recherche est toujours la même), c'est peut-être plus compliqué avec des fichiers sources dont la structure diffère à chaque fois.

En tout cas merci pour vos propositions !
 

job75

XLDnaute Barbatruc
Bonjour mexitinoco, le forum,

Il est tout à fait inutile d'ouvrir et copier le fichier source.

Placez cette macro dans le fichier de destination et exécutez-la :
VB:
Sub Definir_Nom()
Dim x$, n%, chemin$, fichier$
x = CStr(ThisWorkbook.Sheets("Data").[D15]) 'adaptable
On Error Resume Next
ThisWorkbook.Names("MaPlage").Delete 'RAZ
If x = "" Then Exit Sub
If Dir(x) = "" Then MsgBox "Fichier '" & x & "' introuvable !": Exit Sub
n = InStrRev(x, "\")
chemin = Left(x, n)
fichier = Mid(x, n + 1)
ThisWorkbook.Names.Add "MaPlage", "='" & chemin & "[" & fichier & "]verification'!$R$2:$AE$19"
End Sub
Vous pouvez ensuite utiliser le nom défini MaPlage dans vos formules RECHERCHEV.

A+
 

job75

XLDnaute Barbatruc
Bien entendu pour lancer automatiquement la macro précédente vous pouvez utiliser cette macro évènementielle :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D15]) Is Nothing Then Definir_Nom
End Sub
Elle est à placer dans le code de la feuille "Data" (clic droit sur l'onglet et Visualiser le code).
 

mexitinoco

XLDnaute Nouveau
Bonjour job75,

Votre solution n'est pas franchement plus simple, elle implique de nommer la plage de cellule (ici "Ma plage" dans votre code), or encore une fois le fichier est variable, ce qui veut dire que je serais obligé de nommer ma plage souhaitée dans chacun de ces fichiers, pas vraiment pratique...

La macro que j'utilise fonctionne très bien et répond parfaitement à mon besoin, je n'ai pas besoin de la modifier.
Bonne journée
 

job75

XLDnaute Barbatruc
Votre solution n'est pas franchement plus simple, elle implique de nommer la plage de cellule (ici "Ma plage" dans votre code)
Ma solution est plus simple c'est évident.

La plage n'a pas besoin d'être "nommée" : la macro crée automatiquent un nom défini qui se réfère à la plage source.

Prenez le temps de tester et vous comprendrez.
 

mexitinoco

XLDnaute Nouveau
Ma solution est plus simple c'est évident.

La plage n'a pas besoin d'être "nommée" : la macro crée automatiquent un nom défini qui se réfère à la plage source.

Prenez le temps de tester et vous comprendrez.
Je ne vois pas l'intérêt de votre solution par rapport à la mienne, elles font exactement la même chose avec le même nombre de manipulations, je vais donc rester avec ma macro qui fonctionne très bien.

Merci quand même
 

Discussions similaires

Réponses
7
Affichages
658
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…