Actualisation de liaisons

Actualisation de liaisons - VB/VBA/VBS - Programmation

Marsh Posté le 28-07-2009 à 13:07:20    

Bonjour à tous,
 
Je cherche à faire une macro sous vba qui change les liaisons d'une feuille excel.
 
Pour ce faire j'ai utilisé la commande
feuil1.range("" ).value="='emplacement du fichier [nom du fichier]"
 
Tout marche bien cependant Excel demande l'emplacement du fichier pour chacune de cellules et le nombre de cellule etant grand je me demandais si il y avait un moyen d'eviter cette demande.
 
J'ai essayé d'intégrer à la macro des lignes lançant l'ouverture des différents fichiers sources mais encore une fois le nombre étant tellement important excel lutte pour executer la macro et le probleme précédent n'est que partiellement résolu. Alors que certains fichiers ne me sont plus demandés d'autres le sont tjrs pourtant la synthaxe employé est tjrs la même.
 
Si quelqu'un a des idées pour regler ce problème ou alleger la macro je suis à l'écoute.
 
Merci d'avance.
 
 

Reply

Marsh Posté le 28-07-2009 à 13:07:20   

Reply

Marsh Posté le 28-07-2009 à 15:56:11    

Bonjour
 
J'ai rien compris...
C'est quoi ca :  
feuil1.range("" ).value="='emplacement du fichier [nom du fichier]"  
 
Je ne vois pas en quoi ca change les liaison d'Excel...?
 
Un vrai exemple ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 28-07-2009 à 16:06:05    

En fait je m'y connais pas énormément et j'ai pas trouvé autre chose que faire écrire dans chaque cellule la liaison à utiliser :
 
Feuil1.Range("E29" ).Value = "=-'G:\Users\Desktop\[PACKAGE 09.xls]Feuil1!$C$42"
 
Et avec plusieurs boutons je change les liaisons suivant les besoins.

Reply

Marsh Posté le 28-07-2009 à 16:26:55    

En fait ton but c'est quoi ?
 
Tu as des liaison vers Package08.xls et tu veux passer le tout sur Package09.xls ?
 
Les liaisons, tu peux les voir dans le menu Edition, Lisaisons
 
Ensuite, si ta liaison pointe vers Package08.xls et que tu veux modifier et pointer vers Package09.xls

Code :
  1. ActiveWorkbook.ChangeLink Name:="Package08.xls", NewName:="C:\Package09.xls", Type:=xlExcelLinks



Message édité par SuppotDeSaTante le 28-07-2009 à 16:28:52

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 28-07-2009 à 16:46:56    

C'est un petit peu plus compliqué que ca puisque des fois il n'y a pas de liaisons à la base et je veux en créer une de manière automatisée. Passer du prévisionnel (un chiffre saisi manuellement) au réel (qui s'appuit sur un fichier). C'est pour ca que même si elle est un peu barbare ma solution me plaisait bien si ce n'est le problème d'ouverture des fichiers.

Reply

Marsh Posté le 28-07-2009 à 21:30:10    

Quel probleme d'ouverture des fichiers ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 28-07-2009 à 22:12:57    

Lors de l'execution de la macro, Excel ouvre une petite fenetre et me demande de lui indiquer l'emplacement de certains fichiers plusieurs fois (vraissemblablement une fois par liaison) et vu le nombre de fichiers utilisés c'est tres long. J'aimerai qu'Excel trouve ces fichiers sans que j'aie à le lui indiquer.
 
Ce que je ne comprends pas c'est que les fichiers sont à l'endroit que j'ai spécifié dans la ligne de code (j'ai verifié l'orthographe plusieurs fois). De plus ce problème n'apparait que pour certains fichiers.


Message édité par Frodniles le 28-07-2009 à 22:14:53
Reply

Marsh Posté le 29-07-2009 à 09:38:34    

Oui car tu lui mets des fichiers qui sont fermés. Or il ne les a pas dans la gestion des liaisons. D'où ma ligne de code précédente.
 
Tu as aussi la possibilité, dans les liaisons de lui dire de mettre a jour sans avertir.
 
En plus je ne comprends pas comment cette ligne peut fonctionner... Erreur de recopie surement.
Feuil1.Range("E29" ).Value = "=-'G:\Users\Desktop\[PACKAGE 09.xls]Feuil1!$C$42"
 
De toutes facons que tu créés des liaison par ce biais, ok, maintenant pour les mettre a jour, c'est comme je te l'ai indiqué plus haut. En plus c'est 100 fois plus rapide...
 
 
Edit : ton souci du message, c'est quand tu ouvres le fichier, pas a l'execution de la macro si ?
 
Perso si je fais ca :

Code :
  1. Range("C10" ).Select
  2.     ActiveCell.FormulaR1C1 = "='C:\[TOTO.xls]Feuil1'!R1C1"
  3.     Range("C11" ).Select
  4.     ActiveCell.FormulaR1C1 = "='C:\[Classeur10.xls]Feuil1'!R4C1"

Je n'ai aucun message...
Et si je veux que tous ceux qui pointent sur Classeur10 pointent sur Classeur11 c'est fait en une ligne comme plus haut.

Code :
  1. ActiveWorkbook.ChangeLink Name:="Classeur10 .xls", NewName:="C:\Classeur11 .xls", Type:=xlExcelLinks


 
Pensens aussi a mettre pour tes liaisons ceci :

Code :
  1. ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways


Message édité par SuppotDeSaTante le 29-07-2009 à 09:49:22

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 29-07-2009 à 09:59:46    

Je vais essayer de faire tout ca. Merci beaucoup pour tes réponses.

Reply

Marsh Posté le 29-07-2009 à 10:24:44    

Tu peux aller lire ici aussi, ca peut t'interresser je pense


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed