Bienvenue sur les forums conseil & création · S'enregistrer

Se connecter automatiquement

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » Mise à jour classeur à l'aide d'une macro · Envoyer le lien

Par TheDoude, le 24 Nov 2009, 17:50 Revenir en haut de page Répondre en citant

Bonjour,

J'ai recopié le nouveau code et après renommage et mise à jour liaison sur la semaine 54, il m'a remis le même message d'erreur

Erreur d'exécution '1004':
La Méthode 'ChangeLink' de l'objet'_Workbook' a échoué
Crying or Very sad

Quand je cliques sur débogage, il me surligne la dernière phrase

ActiveWorkbook.ChangeLink Name:=OldLink, NewName:=NewLink, Type:=xlExcelLinks

Je t'envoie le code pour que tu regardes :

Sub Mise_à_Jour()
'
' Mise_à_Jour Macro
'

Dim Sem_Count
Dim NewLink As String


Const OldLink = "\\S_reims1\exploit\EXPLOITATION\QUICK\Sources\Source Fille\Fichier de suivi adm - Sem 00.xls"
NewLink = "\\S_reims1\exploit\QUICK UF\PREPARATION QUICK\Sem "

Sem_Count = Left(Right(ThisWorkbook.Name, 6), 2)
NewLink = NewLink & Sem_Count & "\Fichier de suivi adm - Sem " & Sem_Count & ".xls"

ActiveWorkbook.ChangeLink Name:=OldLink, NewName:=NewLink, Type:=xlExcelLinks

End Sub

Crying or Very sad

@++
Par Horny, le 25 Nov 2009, 18:52 Revenir en haut de page Répondre en citant

Salut,

Bon, j'ai fait le test en créant une liaison sous Excel... Il semblerait que la commande ChangeLink ne fonctionne pas avec le chemin complet du fichier source. J'ai donc modifié (et testé Razz) la macro, ça devrait fonctionner cette fois, en tout cas, moi, ça fonctionne


Code:
Sub Mise_à_Jour()
'
' Mise_à_Jour Macro
'

Dim Sem_Count
Dim NewDir As String, NewLink As String


Const OldLink = "Fichier de suivi adm - Sem 00.xls"
NewDir = "\\S_reims1\exploit\QUICK UF\PREPARATION QUICK\Sem "

Sem_Count = Left(Right(ThisWorkbook.Name, 6), 2)

NewDir = NewDir & Sem_Count
NewLink = "Fichier de suivi adm - Sem " & Sem_Count & ".xls"

ChDir NewDir
ActiveWorkbook.ChangeLink Name:=OldLink, NewName:=NewLink, Type:=xlExcelLinks

End Sub



@+++
Par TheDoude, le 25 Nov 2009, 20:05 Revenir en haut de page Répondre en citant

Salut,

Eh bien moi ça marche pas Crying or Very sad Crying or Very sad Crying or Very sad

j'ai donc copié le fichier source, le l'ai renommé Feuille préparation pour Sem 54, ensuite j'ai fait la liaison sur mon fichier de suivi adm - Sem 54, et pour finir j'appuie sur mon bouton de mise à jour et là il me dit : impossible d'exécuter la macro "Feuille préparation pour Sem 54.xls'!LinkSuiviPrep'. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées. Embarassed
Ne t'inquiète pas elles sont bien activées.
Mais c'est quoi : LinkSuiviPrep' ? Est ce que cela à un rapport ?
Désolé j'aimerais te dire que c'est ok Cool

Mais merci pour ta patiente

@+++
Par TheDoude, le 25 Nov 2009, 20:07 Revenir en haut de page Répondre en citant

Re,

Et surtout comment tu fais toi pour que ça marche .... Rolling Eyes

@+++
Par Horny, le 25 Nov 2009, 20:09 Revenir en haut de page Répondre en citant

Citation:
Mais c'est quoi : LinkSuiviPrep' ? Est ce que cela à un rapport ?


LinkSuiviPrep, c'esst le nom de la macro à lancer... soit le nom qui suit la commande Sub... or, en relisant le code, je vois que tu l'a nommée Mise_à_Jour, donc forcément, la macro appelée n'existe plus Razz

Modifie ton bouton pour qu'il exécute la macro Mise_à_Jour, et l'erreur devrait disparaître Wink !

@+++
Par TheDoude, le 26 Nov 2009, 10:09 Revenir en haut de page Répondre en citant

Horny a écrit:
Salut,

Bon, j'ai fait le test en créant une liaison sous Excel... Il semblerait que la commande ChangeLink ne fonctionne pas avec le chemin complet du fichier source. J'ai donc modifié (et testé Razz) la macro, ça devrait fonctionner cette fois, en tout cas, moi, ça fonctionne


Code:
Sub Mise_à_Jour()
'
' Mise_à_Jour Macro
'

Dim Sem_Count
Dim NewDir As String, NewLink As String


Const OldLink = "Fichier de suivi adm - Sem 00.xls"
NewDir = "\\S_reims1\exploit\QUICK UF\PREPARATION QUICK\Sem "

Sem_Count = Left(Right(ThisWorkbook.Name, 6), 2)

NewDir = NewDir & Sem_Count
NewLink = "Fichier de suivi adm - Sem " & Sem_Count & ".xls"

ChDir NewDir
ActiveWorkbook.ChangeLink Name:=OldLink, NewName:=NewLink, Type:=xlExcelLinks

End Sub



@+++


C'est cette macro que j'ai recopié, elle s'appelle bien Mise_à_Jour ?

C'est pour ça que je ne comprends pas pourquoi elle fait référence à LinkSuiviPrep. Dans mon fichier je n'ai qu'une macro qui s'appelle mise à jour et mon bouton est relié à elle.

Je t'avais prévenu, je ne suis pas doué ... Embarassed

@+++
Par Horny, le 26 Nov 2009, 17:27 Revenir en haut de page Répondre en citant

Salut,

LinkSuiviPrep est le nom que j'avais donnée à la macro au début, mais il a manifestement changé entretemps. Ce n'est pas très important du reste, mais il faut juste s'assurer que le bouton appelle bien la bonne macro (et supprimer toutes les macros sauf celle qui est bonne, histoire d'être sûr Razz)

Attention, il faut bien que le bouton appelle la macro qui se trouve dans le classeur dont on doit modifier la liaison. C'est à dire que, dans les propriétés du bouton, il ne doit pas être fait référence à un nom de fichier avant le nom de la macro, sinon cela veut dire que la macro appelée est celle d'un autre classeur Exclamation

@+++
Par TheDoude, le 03 Déc 2009, 19:38 Revenir en haut de page Répondre en citant

Coucou me revoilou,

Le jeudi c'est le jour de ma nouvelle semaine et voici le résultat:

J'ai recopié le nouveau code et après renommage et mise à jour liaison sur la semaine 50, il m'a remis le même message d'erreur

Erreur d'exécution '1004':
La Méthode 'ChangeLink' de l'objet'_Workbook' a échoué


Quand je cliques sur débogage, il me surligne la dernière phrase

ActiveWorkbook.ChangeLink Name:=OldLink, NewName:=NewLink, Type:=xlExcelLinks

Ci-joint la macro utilisée

Sub Mise_à_Jour()
'
' Mise_à_Jour Macro
'

Dim Sem_Count
Dim NewDir As String, NewLink As String


Const OldLink = "Fichier de suivi adm - Sem 00.xls"
NewDir = "\\S_reims1\exploit\QUICK UF\PREPARATION QUICK\Sem "

Sem_Count = Left(Right(ThisWorkbook.Name, 6), 2)

NewDir = NewDir & Sem_Count
NewLink = "Fichier de suivi adm - Sem " & Sem_Count & ".xls"

ChDir NewDir
ActiveWorkbook.ChangeLink Name:=OldLink, NewName:=NewLink, Type:=xlExcelLinks

End Sub

Voilà Sad

@+++
Par Horny, le 04 Déc 2009, 09:45 Revenir en haut de page Répondre en citant

Salut,

Citation:
J'ai recopié le nouveau code et après renommage et mise à jour liaison sur la semaine 50, il m'a remis le même message d'erreur


Je ne comprend pas, tu met à jour la liaison à la main, et tu lance ensuite la macro qui permet de le faire automatiquement ? Shocked

@+
Par TheDoude, le 04 Déc 2009, 10:42 Revenir en haut de page Répondre en citant

Salut,

Ben oui Embarassed

Sinon comment mon classeur sait où il doit faire la liaison sachant que mes formules sont faites sur une semaine 00. En faisant la mise à jour à la main mes formules sont bonnes et je voulais que la macro devienne bonne également en faisant ma liaison manuellement.

Excuse-moi de ne pas m'être fait comprendre Embarassed

Si tu veux je pourrais t'envoyer mon fichier excel par mail , comme ça tu pourrais voir mes formules et comprendre comment s'articule mes 2 dossiers.

@+++
Par Horny, le 04 Déc 2009, 13:08 Revenir en haut de page Répondre en citant

Alors là, je ne comprend pas l'intérêt d'avoir la macro qui remplace ta liaison si tu la change manuellement avant... puisque c'est pour t'éviter de le faire à la main qu'elle est là Confused

Citation:
Sinon comment mon classeur sait où il doit faire la liaison sachant que mes formules sont faites sur une semaine 00


La macro récupère le numéro de la semaine en cours à partir du nom du classeur d'où elle est lancée. Par exemple, si le classeur ouvert qui lance la macro est Fichier de suivi - sem 54.xls, la macro récupère le 54, et modifie la liaison pour qu'elle ne pointe plus sur le fichier 00 mais sur le fichier sem 54 correspondant (qui lui-même se trouve dans un dossier avec ce même 54). Bref, exactement ce tu fais lorsque tu modifie la liaison à la main...

@+
Par TheDoude, le 05 Déc 2009, 10:59 Revenir en haut de page Répondre en citant

bonjour,

j'ai fait cette macro pour m'éviter de cliquer constamment sur édition liaison etc, car le tableau suivi adm est rempli tout au long de la journée en fait il suit l'ordonnancement des commandes. Donc il contient des volumes qui sont au départ prévisionnels et qui deviennent réels au fur et à mesure de la préparation. Moi j'ai besoin d'exploiter ces volumes, mais je le fais à part dans un autre tableau ( Feuille préparation Sem ... ) à l'intérieur de ce tableau, j'ai des formules de rechercheV qui vont chercher ces volumes. J'ai créé une source avec 2 fichiers en semaine 00 qui sont liés ensemble. Quand je renomme par exemple le fichier suivi adm dans la semaine en cours, les formules à l'intérieur de mes cellules restent liés à la semaine 00. Comment faire pour que mes formules se modifient sans faire de liaison manuelle ? si la macro peut le faire pourquoi pas. Effectivement je n'aurais pas besoin d'une macro si je ne faisais cette manipulation qu'une seule fois. mais comme nous travaillons en réseau quand les volumes sem adm changent cela ne se fait pas automatiquement en temps réel dans mon tableau, pour cela je dois mettre à jour mes liaisons et c'est là que le côté répétitif de l'opération intervient. J'ai donc créé une macro sur ma semaine zéro, avec un bouton de mise à jour et quand je clique dessus il met à jour mes volumes. tout cela fonctionne parfaitement bien jusqu'à la création de la nouvelle semaine, sauf que la macro elle ne fonctionne plus du fait des changements de chemins et de noms de mon fichier suivi adm 00.
D'où ma demande initiale comment faire pour que la macro qui fonctionne bien en semaine 00 fonctionne en semaine xy avec un chemin différent.

Pour moi c'est clair j'espère que pour toi aussi
Embarassed

Merci en tout cas pour tes réponses

@+++
Par Horny, le 07 Déc 2009, 18:24 Revenir en haut de page Répondre en citant

Salut,

Citation:
Quand je renomme par exemple le fichier suivi adm dans la semaine en cours, les formules à l'intérieur de mes cellules restent liés à la semaine 00. Comment faire pour que mes formules se modifient sans faire de liaison manuelle ? si la macro peut le faire pourquoi pas


C'est bien ce qu'est censée faire la macro... et ça marche quand je teste sur mon ordi

Citation:
J'ai donc créé une macro sur ma semaine zéro, avec un bouton de mise à jour et quand je clique dessus il met à jour mes volumes. tout cela fonctionne parfaitement bien jusqu'à la création de la nouvelle semaine, sauf que la macro elle ne fonctionne plus du fait des changements de chemins et de noms de mon fichier suivi adm 00.
D'où ma demande initiale comment faire pour que la macro qui fonctionne bien en semaine 00 fonctionne en semaine xy avec un chemin différent.


Tu lance la macro avant de faire le copier/coller, ou une fois que tu s copié/collé et renommé les 2 fichiers ? La macro que j'ai écrite part du principe qu'elle est lancée après copiage/collage et renommage des fichiers dans leurs répertoires respectifs.

@+++
Par TheDoude, le 08 Déc 2009, 09:13 Revenir en haut de page Répondre en citant

Bonjour,

Il est vrai que je n'ai pas testé mes formules après renommage Cool . Donc je vais le faire et je te tiens au courant.

Merci

@++
Par TheDoude, le 10 Déc 2009, 18:32 Revenir en haut de page Répondre en citant

Salut c'est remoi Shocked

Faisons un petit point, tu as raison quand je crée ma nouvelle semaine , les formules se changent automatiquement sur la semaine en cours sans faire de mise à jour manuelle Laughing
Mais il y a quand même un souci car quand je mets un chiffre dans mon fichier suivi adm il n'apparait pas dans mon tableau. Crying or Very sad Pourtant quand je regarde mes formules elles ont l'air bonnes...
J'ai copié la formule après activation de la macro et je vais faire une mise à jour manuelle comme ça je comparerai les deux pour voir s'il n'y a pas un petit truc de travers dans le chemin ou autre.Wink

Je te tiens au courant

@++

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » Mise à jour classeur à l'aide d'une macro · Envoyer le lien