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 !
Les explications me sont claires, merci.
En effet comme vous le supposez, la fonction RECHERCHEV a besoin d'une table pour aller chercher les données.
Je vous conseille d'utiliser une requête à l'aide de Power Query. Connaissez-vous cela ? Selon la version d'Excel que vous utilisez, elle sera directement intégrée ou non (2016 oui 2010 non).
Pour expliquer brièvement : la requête permet d'aller chercher dans un autre classeur (typiquement le fichier source) un tableau et de l'afficher dans une nouvelle feuille dans votre fichier principal, ainsi dans votre formule recherchev, vous pourrez utiliser directement le tableau source affiché dans la requête. L'avantage c'est quoi me direz-vous s'il s'agit de copier/coller la source ?
==> Pas besoin que le fichier source soit ouvert, et vous pouvez mettre à jour la requête comme bon vous semble (à l'ouverture du fichier travail le plus souvent).
Si besoin d'exemples et/ou plus d'explications, n'hésitez-pas. Tout se trouve sous "Données", "extraires des données depuis...un autre classeur".
Je vous conseille d'utiliser une requête à l'aide de Power Query. Connaissez-vous cela ? Selon la version d'Excel que vous utilisez, elle sera directement intégrée ou non (2016 oui 2010 non).
Pour expliquer brièvement : la requête permet d'aller chercher dans un autre classeur (typiquement le fichier source) un tableau et de l'afficher dans une nouvelle feuille dans votre fichier principal, ainsi dans votre formule recherchev, vous pourrez utiliser directement le tableau source affiché dans la requête. L'avantage c'est quoi me direz-vous s'il s'agit de copier/coller la source ?
==> Pas besoin que le fichier source soit ouvert, et vous pouvez mettre à jour la requête comme bon vous semble (à l'ouverture du fichier travail le plus souvent).
Non je connaissais pas Power Query, mais ce que vous avez l'air de décrire résoudrait parfaitement mon problème Cela me permettrait d'importer automatiquement le tableau du classeur voulu et donc d'aller chercher les données directement dans ce tableau ce qui me permettrait de garder toujours les mêmes formules.
Oui je connais cette formule pour aller chercher les données d'une cellule d'un autre classeur, mais ici j'ai besoin de la rechercheV car dans le classeur sources les données ne restent pas toujours à la même place (des données sont rentrées tous les jours, ce qui décale les cellules).
Et l'objectif initial avec le lien hypertexte c'était de pouvoir le rentrer dans une de mes cellules, et qu'ensuite toutes mes formules RechcercheV y fassent référence, car mon classeur sources ne sera pas toujours le même. Il faut donc que les formules puissent se modifier automatiquement en fonction du classeur sources choisit, sans avoir à resaisir toutes les coordonnées des cellules.
La méthode de Brice G pourrait donc marcher car j'aurais juste à entrer le nom du fichier dont je veux que le tableau soit extrait, et de cette façon je pourrais faire une rechercheV toujours au sein même de mon classeur.
Bonjour Brice G, je viens d'essayer et j'ai réussi à importer un tableau venant d'un autre classeur. Mais après je ne connais pas bien toutes les fonctionnalités, est-il possible par exemple de définir précisément à quel emplacement va être importé le tableau ? (définir dans quelles cellules il va être importé, et peut-on également l'importer dans une feuille de classeur déjà existante ?) Est-il possible également d'automatiser plus la chose ? par exemple : rentrer le nom du fichier source dans une cellule, puis d'appuyer sur un bouton qui via une macro importera le tableau.
Si cela est faisable ça répondra parfaitement à mon besoin
J'avoue que je ne comprends pas très bien les deux formules.
Est-ce que tu rentres les informations relatives au fichier source en ligne 2, le lien hypertexte se créé automatiquement et à partir de là les deux formules en C6 et D6 vont chercher dans le fichier dont le lien est en C4 ?
Parce que tout mon problème c'est de pouvoir changer le fichier source (via un lien hypertexte ou en entrant ses coordonnées dans une cellule) et qu'ensuite toutes les formules RechercheV se modifient en conséquence.
@mexitinoco, la ligne 2 sert effectivement de paramètres à la cellule C4 (vous pouvez placer cette zone à l'endroit qui vous convient, dans un onglet dédié, nommé "Paramètres" par exemple)
Vous pouvez placer des formules ou des listes de validation de données pour rendre certaines cellules de la ligne 2 dynamiques.
A voir si vous avez de nombreux classeurs et d'onglets.
Sinon, j'ai légèrement adapté les formules en C4 et C6 pour je l'espère une meilleure compréhension.
Edit : si vos onglets comportent des espaces, il sera nécessaire d'adapter la formule en conséquence sinon d'indiquer des noms d'onglets sans espace.
D'accord oui merci je comprends mieux la formule en C6, donc ça veut dire qu'en utilisant "INDIRECT" il peut faire une rechercheV directement dans le fichier source qui est mis en lien en C4 ? Si c'est ça ce serait parfait, mais tu disais qu'avec cette formule il faut que le fichier source soit ouvert ?
Je pencherai plus dans ce cas pour la formule qui permet de le faire tout en gardant le fichier source fermé, comme tu le proposais dans ton précédent fichier joint.
D'accord oui merci je comprends mieux la formule en C6, donc ça veut dire qu'en utilisant "INDIRECT" il peut faire une rechercheV directement dans le fichier source qui est mis en lien en C4 ? Si c'est ça ce serait parfait, mais tu disais qu'avec cette formule il faut que le fichier source soit ouvert ?
Je pencherai plus dans ce cas pour la formule qui permet de le faire tout en gardant le fichier source fermé, comme tu le proposais dans ton précédent fichier joint.
Bonsoir à tous, @mexitinoco, malheureusement la fonction Indirect() ne fonctionne qu'avec le fichier ouvert,
Dans mon message #7, j'ai utilisé une formule Index/Equivaut mais avec une formule qui ne pointait pas vers la cellule C4 (lien hypertexte) donc non dynamique.
La formule RechercheV aurait également fonctionné de cette manière avec le classeur fermé mais sans répondre à votre souhait.
Sinon, en espérant qu'un membre ait une solution par formule, je ne vois que 2 possibilités : en VBA ou Power query comme suggéré par Brice G précédemment.
Cependant, il faudrait en savoir davantage sur la présentation du fichier final et le nombre de fichiers sources.
En attendant, je me suis inspiré de ce lien trouvé sur le site de Boisgontier pour une solution VBA,
Dans le fichier en pièce jointe, la plage du fichier source était renommée "Table_Source" donc ne pas oublier de modifier dans le code selon le nom de la plage.
Il faudra également l'adapter si vous avez plusieurs zones de RechercheV
Code à placer dans la feuille de l'éditeur VBA :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$4" Or Target.Address = "$C$2" And Target.Count = 1 Then
If [C4] <> "" And [C2] <> "" Then
ChampFormule = "C6"
chemin = Range("C4")
fichier = Range("C2")
NomTableRecherche = "Table_Source" ' nom du champ
If Dir(chemin & "\" & fichier) <> "" Then
Range(ChampFormule).Formula = _
"=VLOOKUP(B6," & "'" & chemin & "\" & fichier & "'!" & NomTableRecherche & ",2,false)"
Else
MsgBox "fichier inconnu"
End If
End If
End If
End Sub
Bonsoir à tous, @mexitinoco, malheureusement la fonction Indirect() ne fonctionne qu'avec le fichier ouvert,
Dans mon message #7, j'ai utilisé une formule Index/Equivaut mais avec une formule qui ne pointait pas vers la cellule C4 (lien hypertexte) donc non dynamique.
La formule RechercheV aurait également fonctionné de cette manière avec le classeur fermé mais sans répondre à votre souhait.
Sinon, en espérant qu'un membre ait une solution par formule, je ne vois que 2 possibilités : en VBA ou Power query comme suggéré par Brice G précédemment.
Cependant, il faudrait en savoir davantage sur la présentation du fichier final et le nombre de fichiers sources.
En attendant, je me suis inspiré de ce lien trouvé sur le site de Boisgontier pour une solution VBA,
Dans le fichier en pièce jointe, la plage du fichier source était renommée "Table_Source" donc ne pas oublier de modifier dans le code selon le nom de la plage.
Il faudra également l'adapter si vous avez plusieurs zones de RechercheV
Code à placer dans la feuille de l'éditeur VBA :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$4" Or Target.Address = "$C$2" And Target.Count = 1 Then
If [C4] <> "" And [C2] <> "" Then
ChampFormule = "C6"
chemin = Range("C4")
fichier = Range("C2")
NomTableRecherche = "Table_Source" ' nom du champ
If Dir(chemin & "\" & fichier) <> "" Then
Range(ChampFormule).Formula = _
"=VLOOKUP(B6," & "'" & chemin & "\" & fichier & "'!" & NomTableRecherche & ",2,false)"
Else
MsgBox "fichier inconnu"
End If
End If
End If
End Sub
Désolé pour cette réponse très tardive, j'étais occupé par d'autres soucis vba ^^
Merci beaucoup pour vos solutions, mais finalement j'ai fait autrement : j'ai simplement fait une macro qui importe une plage de cellule du fichier source dans le fichier destination. On entre juste le lien répertoire du fichier source dans une cellule, on appuie sur un bouton et le tableau souhaité est importé. Ensuite j'ai juste à faire une rechercheV classique vers ce tableau, puisqu'il se situe maintenant dans le même classeur.
En termes du nombre de manipulations à faire c'est la même chose et c'est surtout beaucoup plus simple à coder que ce que je voulais faire initialement.
En termes du nombre de manipulations à faire c'est la même chose et c'est surtout beaucoup plus simple à coder que ce que je voulais faire initialement.
La demande initiale n'avait rien de débile, vous n'avez pas compris ma requête.
Ce que vous proposez en post #4 je le connais bien entendu, mais ce dont j'avais besoin c'était justement d'une astuce quand le nom du fichier source est variable, de ne pas avoir besoin de retaper les formules et qu'il puisse tout de même aller effectuer sa rechercheV.
Enfin bref j'ai finalement trouvé un moyen un peu plus simple de le faire, merci quand même