Créer une liaison entre deux classeurs excel
Résolu/Fermé
plastickman
Messages postés
64
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 février 2012
-
5 nov. 2011 à 19:22
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 - 9 nov. 2011 à 12:38
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 - 9 nov. 2011 à 12:38
A voir également:
- Faire un lien entre deux fichiers excel
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Liste déroulante excel - Guide
- Verifier un lien - Guide
- Fusionner deux fichiers excel - Guide
8 réponses
plastickman
Messages postés
64
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 février 2012
6
9 nov. 2011 à 12:38
9 nov. 2011 à 12:38
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
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
6 nov. 2011 à 10:59
6 nov. 2011 à 10:59
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
plastickman
Messages postés
64
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 février 2012
6
7 nov. 2011 à 13:58
7 nov. 2011 à 13:58
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?
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
7 nov. 2011 à 15:50
7 nov. 2011 à 15:50
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
plastickman
Messages postés
64
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 février 2012
6
7 nov. 2011 à 21:52
7 nov. 2011 à 21:52
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"
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
7 nov. 2011 à 22:27
7 nov. 2011 à 22:27
ça ne marche pas ne veut rien dire...
Ca te donne quoi comme formule dans la cellule ?
eric
Ca te donne quoi comme formule dans la cellule ?
eric
plastickman
Messages postés
64
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 février 2012
6
8 nov. 2011 à 08:28
8 nov. 2011 à 08:28
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.
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
8 nov. 2011 à 09:02
8 nov. 2011 à 09:02
Bonjour,
J'avais écrit Avec ton nom de fichier xxx.xls dans une variable fich par exemple
Donc traite la chaine :
par exemple si ton nom de fichier est toujours de la forme 123456.xls alors :
fich = right(nomfich,10)
eric
J'avais écrit Avec ton nom de fichier xxx.xls dans une variable fich par exemple
Donc traite la chaine :
par exemple si ton nom de fichier est toujours de la forme 123456.xls alors :
fich = right(nomfich,10)
eric
plastickman
Messages postés
64
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 février 2012
6
8 nov. 2011 à 13:56
8 nov. 2011 à 13:56
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
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
8 nov. 2011 à 19:10
8 nov. 2011 à 19:10
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
plastickman
Messages postés
64
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 février 2012
6
9 nov. 2011 à 09:23
9 nov. 2011 à 09:23
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.
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié par eriiic le 9/11/2011 à 10:03
Modifié par eriiic le 9/11/2011 à 10:03
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
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
9 nov. 2011 à 10:17
9 nov. 2011 à 10:17
PS :
Tu utilises
Base toi sur nomfich, tu as tout dedans : chemin+nom_fichier.
Extrait le path et nomfich
Et n'ouvre pas le fichier, c'est une perte de temps
eric
Tu utilises
For Each NomFic In .FoundFiles
Base toi sur nomfich, tu as tout dedans : chemin+nom_fichier.
Extrait le path et nomfich
Et n'ouvre pas le fichier, c'est une perte de temps
eric
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié par eriiic le 9/11/2011 à 10:41
Modifié par eriiic le 9/11/2011 à 10:41
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