Liaison "dynamique" entre 2 classeurs
Fermé
Del78
-
9 oct. 2008 à 10:44
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 9 oct. 2008 à 18:36
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 9 oct. 2008 à 18:36
A voir également:
- Liaison "dynamique" entre 2 classeurs
- Tableau croisé dynamique - Guide
- Liste déroulante dynamique excel - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- France 2 uhd - Accueil - TV & Vidéo
5 réponses
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
9 oct. 2008 à 14:57
9 oct. 2008 à 14:57
Salut,
Desole pour le retard, j'etais parti mange.
Voila un bout de code VB que j'ai teste et qui marche.
1) Ouvre le doc C2 et assure toi que les formules pointent vers la bonne adresse de C3.
2) Dans le doc C2, tu doit cree 2 noms :
-> Menu Insertion, Noms, Definir
Nom dans le classeur : relpath
Fait reference a : ..\D3\[C3.xls] (le chemin relatif de C3)
-> Clic sur Ajouter
Nom dans le classeur : path
Fait reference a : ="C:\Documents and Settings\santiago\My Documents\D1\D3\[C3.xls] (le chemin absolu de C3)
-> Clic sur Ajouter
-> Clic sur Fermer
3) Dans le code VBA de C2 (Alt+F11), dans l'objet ThisWorkbook, ajoute le code suivant :
4) Voila, tu n'as plus qu'a faire des tests et me poser des questions si necessaire.
Desole pour le retard, j'etais parti mange.
Voila un bout de code VB que j'ai teste et qui marche.
1) Ouvre le doc C2 et assure toi que les formules pointent vers la bonne adresse de C3.
2) Dans le doc C2, tu doit cree 2 noms :
-> Menu Insertion, Noms, Definir
Nom dans le classeur : relpath
Fait reference a : ..\D3\[C3.xls] (le chemin relatif de C3)
-> Clic sur Ajouter
Nom dans le classeur : path
Fait reference a : ="C:\Documents and Settings\santiago\My Documents\D1\D3\[C3.xls] (le chemin absolu de C3)
-> Clic sur Ajouter
-> Clic sur Fermer
3) Dans le code VBA de C2 (Alt+F11), dans l'objet ThisWorkbook, ajoute le code suivant :
Private Sub Workbook_Open() Dim oldaddress As String, newaddress As String Dim FSO As New FileSystemObject Dim Sheet As Object 'Compare addresses oldaddress = Names("path").Value oldaddress = Mid$(oldaddress, 3, Len(oldaddress) - 3) newaddress = Names("relpath").Value newaddress = FSO.GetAbsolutePathName(ThisWorkbook.Path & "\" & Mid$(newaddress, 3, Len(newaddress) - 3)) 'If they are different If newaddress <> oldaddress Then 'Replace occurences For Each Sheet In ThisWorkbook.Sheets Sheet.Cells.Replace oldaddress, newaddress Next 'Save current address Names("path").Value = newaddress End If End Sub
4) Voila, tu n'as plus qu'a faire des tests et me poser des questions si necessaire.
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
9 oct. 2008 à 11:13
9 oct. 2008 à 11:13
Il y a une methode manuelle :
- Menu Editions, Liaisons
- Clique sur modifier la source et pointe sur le nouveau C3.
- Si tu clic sur Invite de demarrage, tu peux configurer la maniere dont les liaisons se mettent a jour au demarrage.
Pour une methode automatique, j'imagine bien un truc faisable en VBA mais ca demandera au moins 15 minutes. Si ca t'interesse, fais le moi savoir.
A+
Santiago
- Menu Editions, Liaisons
- Clique sur modifier la source et pointe sur le nouveau C3.
- Si tu clic sur Invite de demarrage, tu peux configurer la maniere dont les liaisons se mettent a jour au demarrage.
Pour une methode automatique, j'imagine bien un truc faisable en VBA mais ca demandera au moins 15 minutes. Si ca t'interesse, fais le moi savoir.
A+
Santiago
Bonjour Santiago69,
Et merci pour ta réponse...
La solution automatique m'intéresse énormément, même si elle prend 15 minutes :-)... En effet, mes classeurs ont vocation à aller sur le bureau d'un client, qui les mettra où il veut par la suite ! Il vaut mieux que je prévoit le coup, sinon je vais faire un peu tâche quand je lui mettrais sur son PC...
Merci !
Et merci pour ta réponse...
La solution automatique m'intéresse énormément, même si elle prend 15 minutes :-)... En effet, mes classeurs ont vocation à aller sur le bureau d'un client, qui les mettra où il veut par la suite ! Il vaut mieux que je prévoit le coup, sinon je vais faire un peu tâche quand je lui mettrais sur son PC...
Merci !
Salut,
Pas de soucis, je te rassure tu as le droit d'aller manger !
Merci pour ta réponse, j'ai testé et malheureusement cela ne fonctionne pas ! J'ai une erreur de compilation "Type défini par l'utilisateur non défini" et FSO As New FileSystemObject à la troisième ligne et surligné en gris...
N'étant pas du tout à l'aise avec ceci, je veux bien un nouveau coup de pouce... Je pense que j'ai bien défini mes noms...
Merci !!
Pas de soucis, je te rassure tu as le droit d'aller manger !
Merci pour ta réponse, j'ai testé et malheureusement cela ne fonctionne pas ! J'ai une erreur de compilation "Type défini par l'utilisateur non défini" et FSO As New FileSystemObject à la troisième ligne et surligné en gris...
N'étant pas du tout à l'aise avec ceci, je veux bien un nouveau coup de pouce... Je pense que j'ai bien défini mes noms...
Merci !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
9 oct. 2008 à 18:36
9 oct. 2008 à 18:36
Ah merde, j'avais oublie une etape :
Retourne dans l'interface VBA (Ctrl+F11)
Menu Outils, References...
Tu coche la case Microsoft Scripting Runtime
Tu clic sur OK, tu ferme le classeur et tu reouvre.
Retourne dans l'interface VBA (Ctrl+F11)
Menu Outils, References...
Tu coche la case Microsoft Scripting Runtime
Tu clic sur OK, tu ferme le classeur et tu reouvre.