Créer une liaison entre deux classeurs excel
Résolu
plastickman
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
plastickman Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
plastickman Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Liaison entre classeur excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Nombre de jours entre deux dates excel - Guide
8 réponses
Je ne sais pas comment te remercier.
Tout marche parfaitement bien et en plus j'ai appris un paquet de chose.
J'ai un super outil maintenant!!!
Encore merci,
jp
Tout marche parfaitement bien et en plus j'ai appris un paquet de chose.
J'ai un super outil maintenant!!!
Encore merci,
jp
Bonjour,
essaie avec :
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "='D:\ton chemin\[ton fichier]Renseignements'!$A$1"
eric
essaie avec :
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "='D:\ton chemin\[ton fichier]Renseignements'!$A$1"
eric
Bonjour,
Ce code fonctionne bien mais le problème est qu'il me demande de préciser manuellement chaque nom de fichier (j'en ai environ 700...). J'ai essayé la ligne suivante, mais ça ne marche pas:
Qu'en penses-tu?
Ce code fonctionne bien mais le problème est qu'il me demande de préciser manuellement chaque nom de fichier (j'en ai environ 700...). J'ai essayé la ligne suivante, mais ça ne marche pas:
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "=' C:\Documents and Settings\jp\Bureau\EXERCICE 2012\test" & ActiveWorkbook.Name & " \Renseignements'!A1"
Qu'en penses-tu?
Bonjour,
Avec ton nom de fichier xxx.xls dans une variable fich par exemple ça serait :
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "='D:\ton chemin\[" & fich & "]Renseignements'!$A$1"
eric
Avec ton nom de fichier xxx.xls dans une variable fich par exemple ça serait :
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "='D:\ton chemin\[" & fich & "]Renseignements'!$A$1"
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai utilisé la variable "NomFic" et ça ne marche toujours pas.
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "='D:\ton chemin\[" & NomFic & "]Renseignements'!$A$1"
C'est vrai que je n'ai pas été très clair...
Voilà la formule dans la première cellule de la colonne A, "111103" étant le nom d'un fichier (client):
J'en déduit que ma variable "NomFic" intègre déjà le chemin (ce que je ne comprends pas...) et je n'explique pas pourquoi on retrouve également [Renseignements] avant "Renseignements A1.
Voilà la formule dans la première cellule de la colonne A, "111103" étant le nom d'un fichier (client):
=' C:\Documents and Settings\jp\Bureau\EXERCICE 2012\test\[C:\Documents and Settings\jp\Bureau\EXERCICE 2012\test\111103\111103.xls] \[Renseignements]Renseignements'!A1
J'en déduit que ma variable "NomFic" intègre déjà le chemin (ce que je ne comprends pas...) et je n'explique pas pourquoi on retrouve également [Renseignements] avant "Renseignements A1.
Bon, je crois que ce n'est pas gagné...
J'ai rajouté en tête:
en suite, comme le nom de mes fichiers ne fait pas toujours le nombre de caractères j'ai mis:
J'obtiens dans ma cellule:
Ce qui me semble bon, et pourtant, ça ne trouve pas la valeur de cellule concernée, et pire, si je sauvegarde, le chemin indiqué dans ma cellule est écrit deux fois lorsque j'ouvre à nouveau mon classeur, ce qui donne:
J'ai rajouté en tête:
Dim Fich As Variant
en suite, comme le nom de mes fichiers ne fait pas toujours le nombre de caractères j'ai mis:
Fich = ActiveWorkbook.Name .Range("D65536").End(xlUp).Offset(1, 0).Formula = "=' C:\Documents and Settings\jp\Bureau\EXERCICE 2012\test\[" & Fich & " ]Renseignements'!A1"
J'obtiens dans ma cellule:
='C:\Documents and Settings\jp\Bureau\EXERCICE 2012\test\[111103 nom du client.xls]Renseignements'!A1
Ce qui me semble bon, et pourtant, ça ne trouve pas la valeur de cellule concernée, et pire, si je sauvegarde, le chemin indiqué dans ma cellule est écrit deux fois lorsque j'ouvre à nouveau mon classeur, ce qui donne:
='C:\Documents and Settings\jp\Bureau\EXERCICE 2012\test\ C:\Documents and Settings\jp\Bureau\EXERCICE 2012\test\[111103 nom du client.xls ]Renseignements'!A1
Bonjour,
Fabrique tes formules avec les fichiers concernés fermés, ça devrait le faire.
J'ai cru lire qcq part que tu en avais 200, tu ne vas peut-être pas tous les ouvrir...
Si le fichier est ouvert la partie chemin est masquée par excel et rajoutée à sa fermeture. Dans ce cas la formule est : =[Classeur1]Feuil1!$A$1
Fabrique tes formules avec les fichiers concernés fermés, ça devrait le faire.
J'ai cru lire qcq part que tu en avais 200, tu ne vas peut-être pas tous les ouvrir...
Si le fichier est ouvert la partie chemin est masquée par excel et rajoutée à sa fermeture. Dans ce cas la formule est : =[Classeur1]Feuil1!$A$1
Bonjour,
J'ai bien cru que c'était bon, mais c'était trop beau...
J'ai fait comme tu m'as dit:
J'ai conservé en tête de code:
En suite, j'ai transformé ma ligne:
Le problème étant qu'il ne trouve pas à quoi correspond ma variable "Fich", il me demande à nouveau via une fenêtre le fichier correspondant.
La bonne nouvelle est que lorsque je lui montre le classeur que je veux, la liaison se fait bien. Ce qui est surprenant, c'est que dans ma cellule je retrouve:
Je m'attendais à retrouver:
Je ne vois pas comment éviter la variable "Fich", le but de la routine étant d'ouvrir mes 700 fichiers et les répertorier les uns en dessous des autres comme base de donnée.
J'ai bien cru que c'était bon, mais c'était trop beau...
J'ai fait comme tu m'as dit:
J'ai conservé en tête de code:
Dim Fich As Variant
En suite, j'ai transformé ma ligne:
Fich = ActiveWorkbook.Name .Range("D65536").End(xlUp).Offset(1, 0).Formula = "=[Fich]Renseignements!A1"
Le problème étant qu'il ne trouve pas à quoi correspond ma variable "Fich", il me demande à nouveau via une fenêtre le fichier correspondant.
La bonne nouvelle est que lorsque je lui montre le classeur que je veux, la liaison se fait bien. Ce qui est surprenant, c'est que dans ma cellule je retrouve:
=[Fich]Renseignements!A1
Je m'attendais à retrouver:
=[nom du classeur choisi]Renseignements!A1
Je ne vois pas comment éviter la variable "Fich", le but de la routine étant d'ouvrir mes 700 fichiers et les répertorier les uns en dessous des autres comme base de donnée.
Bonjour,
Ta formule doit être une chaine de charactère.
Quand tu insères une variable il faut fermer ton début de chaine avec : "
insérer ta variable avec : & nom_de_variable &
ouvrir le début de la chaine finale avec "
donc :
Fich = ActiveWorkbook.Name
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "=[" & Fich & "]Renseignements!A1"
et évite d'utiliser as variant, type tes variables :
Dim Fich As String
D'une part c'est plus rapide, d'autre part ça peut te faire ressortir des erreurs
eric
Ta formule doit être une chaine de charactère.
Quand tu insères une variable il faut fermer ton début de chaine avec : "
insérer ta variable avec : & nom_de_variable &
ouvrir le début de la chaine finale avec "
donc :
Fich = ActiveWorkbook.Name
.Range("D65536").End(xlUp).Offset(1, 0).Formula = "=[" & Fich & "]Renseignements!A1"
et évite d'utiliser as variant, type tes variables :
Dim Fich As String
D'une part c'est plus rapide, d'autre part ça peut te faire ressortir des erreurs
eric
PS2 :
Je vois que tu rames pas mal dans la manipulation des chaines et ça fait déjà 4 jours qu'on est dessus...
Sur la base de ton code du début essaie avec :
C'est ça que tu voulais ?
eric
Je vois que tu rames pas mal dans la manipulation des chaines et ça fait déjà 4 jours qu'on est dessus...
Sur la base de ton code du début essaie avec :
Sub ExtractRefresh() Dim ScanFic As Office.FileSearch Dim NomFic As Variant Dim Nbr As Long, p As Long Dim path As String, fich As String Set ScanFic = Application.FileSearch With ScanFic .NewSearch .LookIn = ActiveWorkbook.path .SearchSubFolders = True .Filename = "xls" .MatchTextExactly = True Nbr = .Execute For Each NomFic In .FoundFiles If Right(NomFic, 13) = "resultats.xls" Then GoTo suite 'recherche position du dernier \ p = InStrRev(NomFic, "\") ' extraction du path et du nom de fichier path = Left(NomFic, p) fich = Mid(NomFic, p + 1, 50) With Workbooks("resultats.xls").Sheets("diagnostics") .Range("D65536").End(xlUp).Offset(1, 0).Formula = "='" & path & "[" & fich & "]Renseignements'!$A$1" End With suite: Next End With End Sub
C'est ça que tu voulais ?
eric