LIAISON EXCEL

Fermé
cocagrenadine - 4 févr. 2009 à 09:40
m@rina Messages postés 21241 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 janvier 2025 - 4 févr. 2009 à 18:39
Bonjour,
J'ai un tableau exel "1", celui-ci reprend par liaison des données d'un tableau exel "2"
comment mettre à jour le tableau exel "1" à son ouverture et ce sans que le tableau de bord exel "2" soit ouvert ?
est-ce possible ?
merci
A voir également:

8 réponses

jimmax01 Messages postés 32 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 14 mai 2009 4
4 févr. 2009 à 09:49
0
je ne souhaite pas supprimer les liaisons bien au contraire.
je me suis peut etre mal expliquée
j'ai un tableau sur lequel j'ai des données
mon second tableau par l'intermédiaire de liaisons récupère les données du premier tableau
a l'ouverture de mon second tableau, celui-ci me demande si je souhaite ou non mettre à jour les données
je réponds oui car je souhaite, si les données ont été mises à jour pouvoir en bénéficier
c'est la que se pose le problème, les données sont irrécupérables si le tableau d'orignie, c'est à dire celui où sont les données est fermé
si je l'ouvre par contre mon tableau se met à jour, mais je ne souhaite pas devoir l'ouvrir à chaque fois
comment faire ?
merci
0
Mabelle60 Messages postés 468 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 21 juin 2017 130
4 févr. 2009 à 10:40
Salut
J'ai trouvé ç sur 'Excelabo', mais n'ai jamais eu à le tester. JE ne sais pas non plus si ça répondra entièrement à ta question.

Liaison vers un classeur fermé
Pourquoi ne peut-on pas utiliser INDIRECT pour établir une liaison vers un classeur fermé?
=INDIRECT("'C:\Mes Documents\[truc.xls]Feuil1'!$A$1") marche très bien quand truc est ouvert, mais renvoie #REF! dès que truc.xls est fermé alors que ='C:\Mes Documents\[truc.xls]Feuil1'!$A$1 marche très bien même si truc est fermé
En gros : quand le classeur est en mode recalcul, Excel n'effectue aucune opération susceptible d'interférer avec les calculs en cours. En l'occurence, aller chercher le contenu d'un classeur fermé supposerait qu'il établisse d'abord une liaison temporaire, lise la cellule, et détruise ensuite cette liaison. Comme ce type d'action est verrouillé en mode recalcul, INDIRECT échoue.

C'est pour la même raison qu'il est impossible, par exemple, d'ouvrir un nouveau classeur ou de modifier le contenu d'une plage à l'intérieur d'une Function appelée par une formule de cellule.

Une parade toutefois, à l'aide de VBA :

Function RECUP(Fichier As String, Feuille As String, _
Ligne As Long, Col As Integer)
With CreateObject("Excel.Application").Workbooks.Open(Fichier)
RECUP = .Worksheets(Feuille).Cells(Ligne, Col)
.Close False
End With
End Function

Ensuite, par exemple =RECUP("C:\Test.xls";"Feuil1";5;10) pour récupérer la cellule Feuil1!J5 de ce classeur fermé (note qu'il est quand-même temporairement ouvert par la fonction...)

Ca marche pour la seule raison que la fonction lit le contenu du classeur fermé par l'intermédiaire d'une nouvelle instance d'Excel.
Celle-ci étant indépendante de la session active, le "verrouillage" n'a plus lieu.

Attention, chaque appel de RECUP lançant une nouvelle instance d'Excel, cette fonction n'est pas très rapide à l'exécution... à utiliser donc avec modération!
0
Bonjour,
apparemment tu te débrouille pas mal en excel tu pourrais m'aider STP.
jais un petit problème ca doit etre simple mais je trouve pas la solution...
jais 10.000 noms dans la colonne A et 12000 noms dans la colonne B
je voudrai faire une formule dans la colonne C , si un nom de la colonne B ce trouve dans la colone A
on le confirme par un ok sur la colonne C sur la meme ligne ou se trouve le nom repeter dans la colonne B
j arive a faire la recherche mais un par un et c'es pas amusant, aussi quand je tire la formule sur toutes la colonne C sa decale la recherche...
merci pour vos solutions
0
j'essaye, merci par avance
0
m@rina Messages postés 21241 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 janvier 2025 11 377
4 févr. 2009 à 11:52
Bonjour,

En principe, il n'y a besoin de rien du tout, juste à préciser que la mise à jour des liens est automatique... Le classeur n'a pas besoin d'être ouvert.
Menu Edition, Liaison = Mise à jour automatique.

L'article dans Excelabo parle de la fonction INDIRECT ! A priori ce n'est pas ton problème !!
Peux tu nous dire comment tu as fait tes liaison ?
Est ce simplement une formule de type ='[monfichier.xls]Feuil1'!$A$1 ??

m@rina
0
Ma liaison est celle-si

=NB.SI('F:\CREANCES\[Créances 2008.xls]Octobre'!$F$7:$F$32;$A83)

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 21241 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 janvier 2025 11 377
4 févr. 2009 à 13:23
Bonjour,

Ah oui, effectivement avec ce type de fonction, les liens ne se mettent à jour que si le classeur est ouvert.

Tu pourrais faire une macro qui ouvre le classeur d'origine à l'ouverture du classeur qui contient les formules.

Sinon, au lieu de mettre un NB.SI, essaie d'utiliser le SOMMEPRODD :

=SOMMEPROD(('F:\CREANCES\[Créances 2008.xls]Octobre'!$F$7:$F$32=$A83)*1)

m@rina
0
La formule avec "=sommeprod" ne fonctionne pas non plus.

Auriez-vous une autre possibilité.
0
m@rina Messages postés 21241 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 janvier 2025 11 377
4 févr. 2009 à 15:54
Je viens pourtant de tester et la formule avec SOMMEPROD fonctionne tout à fait bien avec le classeur d'origine fermé.

m@rina
0
Excel me demande de corriger la formule donc j'accepte et voici ce qu'il propose :
=SOMMEPROD('F:\Maladie Angers\CREANCES\Au fil de l''eau\[Créances 2008.xls]Octobre'!$F$7:$F$32=$A83)*1

et suite à cette correction je n'ai aucun résultat qui apparait dans ma cellule ni la mention "valeur!" ou "ref".
0
m@rina Messages postés 21241 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 janvier 2025 11 377
4 févr. 2009 à 16:14
Non, il manque des parenthèses :


=SOMMEPROD(('F:\Maladie Angers\CREANCES\Au fil de l''eau\[Créances 2008.xls]Octobre'!$F$7:$F$32=$A83)*1)

m@rina
0
Eureka !! Ca fonctionne !!
Peut tu me dire à quoi correspond la fin de la formule => *1)

Merci M@rina.
0
m@rina Messages postés 21241 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 janvier 2025 11 377
4 févr. 2009 à 18:39
Ahhh !!! Tant mieux !! ;))

Pour le *1, en fait le SOMMEPROD est une fonction qui fait la somme de produits. Elle est tellement pratique qu'elle est souvent détournée, car comme tu le vois, elle permet de faire des sommes conditionnelles (NB.SI ou Somme.SI, elle permet de remplacer des matricielles, même si au départ elle n'était pas faite pour ça. Par ailleurs, comme tu peux t'en rendre compte, elle permet de faire des calculs avec des données provenant de fichiers fermés.
Pour obtenir un produit il faut multiplier... Si pas de multiplication, pas de produits. Donc, dans cette formule, on multiplie parce que c'est nécessaire, et seulement par 1 pour ne pas fausser le résultat.

La formule compte 1 à chaque fois que la condition est vraie, multiplie ce nombre par 1 ce qui ne change rien au résultat et additionne le tout.

m@rina
0