lien "dynamique" entre des fichiers

Y compris Power BI, Power Query et toute autre question en lien avec Excel
s
senga
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 17 janvier 2007

Message par senga » 17 janvier 2007, 10:08

Bonjour à tous,

voilà je rencontre 2 problèmes avec les liaisons entre classeur :

1er problème :
imaginons que j'ai 10 classeurs "0.xls, 1.xls, 2.xls ... 9.xls"
dans les classeurs de 1 à 9, j'ai un chiffre dans la case A1.

dans mon classeur 0.xls, je voudrais entrer un numéro de classeur dans une cellule (par exemple 5), et qu'il aille me chercher dans ce classeur le chiffre indiqué en case A1.

en gros, si je mets 5 dans la case A1, je voudrais une formule du style ='[5.xls]Feuil1'!A1

Je pensais utiliser la fonction INDIRECT pour pouvoir générer la formule ci-dessus, mais je n'arrive pas à la faire fonctionner pour aller dans un autre classeur :'( je ne sais pas si c'est parce que je m'y prends mal, ou si c'est parce qu'elle ne fonctionne que pour des références vers le classeur courant... si vous avez une idée ?!

2ème problème :

j'ai aussi un problème plus général dans le cas où j'accède directement au classeur (avec une formule type ='[Nom_classeur.xls]feuille!A1')
Si la cellule A1 est fusionnée avec B1 (fusion horizontale: en verticale, cela marche.), alors cette formule ne fonctionne que quand le classeur Nom_classeur.xls est ouvert :/ s'il est fermé, elle indique "#N/A" :'(
évidemment, si la cellule n'est pas fusionnée, ou fusionnée avec des cellules de la même colonne, cela fonctionne :/

Merci d'avance.
Modifié en dernier par senga le 18 janvier 2007, 11:38, modifié 1 fois.
A
Amadéus
Modérateur
Modérateur
Messages : 17'763
Appréciations reçues : 76
Inscrit le : 7 mai 2006
Version d'Excel : Office Excel 2003 FR et 2013FR

Message par Amadéus » 17 janvier 2007, 19:00

Bonjour senga

Pas si simple car pour qu'une liaison fonctionne, comme du reste tu le signales correctement dans la partie 2 de ta querstion,il faut que le chemin d'accès soit complet.
Tout d'abord, la formule de liaison avec la cellule A1 de la Feuille s'appelant Feuil1 dans le fichier 5.xls qui se trouverait dans le répertoire D et dans Mes documents pourraît s'écrire:
="="&"'D:\Mes documents\"&"["&$A$1&".xls"&"]"&"Feuil1'!$A$1"si la cellule A1 contient 5.
On se retrouve alors avec une formule texte qui affiche
='D:\Mes documents\[5.XLS]Feuil1'!$A$1Pour activer cette formule, il faut passer par un module VBA avec l'instruction:
ActiveCell.Value = ActiveCell.Value
Le problème est que cette application transforme la cellule contenant la formule texte en une liaison figée avec 5 et qu'en entrant un nouveau nom de fichier en A1, ça ne marche plus.

Pour contourner ce probléme:
en A1 le numéro du fichier soit 5
en A2 la formule texte
="="&"'D:\Mes documents\"&"["&$A$1&".xls"&"]"&"Feuil1'!$A$1"
et en A3 le résultat renvoyé par la macro.

Le code à copier-coller: Menu "Outils" "Macro" "Visual basic Editor" et "Insérer" "Module"
Sub Liaison_Variable()
'
' Liaison_Variable Macro
' Macro enregistrée le 14/09/2006 par Amadéus
'

'
    Range("A2").Select
    Selection.Copy
    Range("A3").Select
    ActiveSheet.Paste
    Range("A3").Select
    Application.CutCopyMode = False
    ActiveCell.Value = ActiveCell.Value
End Sub
Il faut bien sur s'assurer que la cellule du fichier contient bien quelque chose.

Cordialement

Amadéus
A
Amadéus
Modérateur
Modérateur
Messages : 17'763
Appréciations reçues : 76
Inscrit le : 7 mai 2006
Version d'Excel : Office Excel 2003 FR et 2013FR

Message par Amadéus » 17 janvier 2007, 19:04

Rebonjour

Avec ce post, le fichier joint pour les 2 réponses.
Problème 2

Pour ma part, une liaison reste une liaison, que la cellule soit ou nom fusionnée.

Et l'adresse A1 reste bien A1, même en cas de fusion de A1 avec B1 ou A2.
Pour ma part, je me suis placé en situation réelle en créant un classeur 5.xls et tout fonctionne normalement, fusionné ou nom. Je ne peux donc t'apporter de réponse, sinon d'essayer cette curiosité qui fonctionne classeur lié fermé.Au lieu d'écrire en A1:

='D:\Mes documents\[5.xls]Feuil1'!$A$1essaie
=SOMMEPROD(--('D:\Mes documents\[5.xls]Feuil1'!$A$1>1); --('D:\Mes documents\[5.xls]Feuil1'!$A$1))
Cordialement,

Amadéus

https://www.excel-pratique.com/~files/doc/senga.xls
s
senga
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 17 janvier 2007

Message par senga » 18 janvier 2007, 11:38

:shock:

je n'avais pas pensé à utiliser une macro =)

merci énormément pour cette solution (je n'ai regardé que la première partie), elle a l'air de fonctionner niquel. Bon, je vais avoir besoin d'un peu plus de boulot que prévu pour faire mon truc, mais au final, ça devrait être bon :)

merci encore !
t
toto31
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 17 mars 2010
Version d'Excel : 2003 FR

Message par toto31 » 26 mai 2010, 07:59

re amadeus !

voila mon fichier test.. tu verra j'ai essayé plusieurs formules.. et les lettre à la fin cest les noms de mes cellules et DT CC cest le nom des mes onglets
mais j'ai tjs des probleme de mise à jours des liaisons...
synth.zip
(25.54 Kio) Téléchargé 513 fois
et je crois que cette formule :
='G:\DT\Boite J\33\[33_JH3169_00.xls]DT CC'!$C$69
elle marche.. mais jaimeré avec le second fichier pouvoir sortir en choisissant un fichier
toute les formules avec la cellule de fin qui change, comme ca je copi cette ligne dans mon fichier synthese et le fichier est rajouté :).. je sais pas si je suis clair...
test - rajouter une ligne collage liaison.xls
(47.5 Kio) Téléchargé 420 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message