Je vais essayer de vous expliquer mon problème le plus clairement possible.
J'ai créé un fichier excel dans lequel je gère des commandes. A partir de ce fichier j'exécute des tris dans un fichier temp (excel) puis j'ouvre depuis excel un fichier WORD "liste" puis un fichier "étiquette" toujours sous word et j'effectue sous word un publipostage.
Nous sommes plusieurs à utiliser ce programme. Losque j'exécute ces fichiers sous ma cession, pas de problème. Deux autres collaboratrices utilisant le même fichier sous leur cession, se retrouve systématiquement avant le publipostage avec l'erreur '4160'.
J'ai vérifié les chemins d'accès, ils sont identiques. Nous utilisons les mêmes macros.
Qu'est-ce qui pourrait faire que cette erreur n'apparaissent que sur certaines cessions ??
Dans l'attente de vous lire si mon brin d'explications est compréhensible.
Lorsque tu generes tes deux fichiers word, tu les generes en local ou sur le serveur entreprise ?
Sur ta session, le fichier excel que tu utilise provient il de ton disque OS ou du reseau ?
Je penses que c'est peut etre une histoire de path, mais ca reste a valider...
Je suis quasi sur que c'est bien une histoire de path.
Peux tu mettre lancer la macro sur le pc de tes collaboratrices, des que ca bug lancer le debogage et faire un sreenshot de la ligne en jaune et des lignes autour (notamment celles qui contiennent les paths absolus d'ou se trouve le(s) fichier(s) )
Je crois que j'ai compris
Deux choses :
- tu ouvres tes fichiers word dans le path indiqué. Bien, mais ton fichier excel duquel tu appelles ces fichiers word se trouve t-il lui aussi dans ce path ?
- peux tu me faire un copier-coller du path complet que je puisse voir la fin de la ligne ?
Sub OuvrirWordDoc()
'References: cocher Microsoft Word 9.0 Object Library ' ou 10.0 ou autre
'selon ta version de Word
Dim wdAPP As Word.Application, wdDoc As Word.Document
On Error Resume Next
Set wdAPP = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set wdAPP = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdDoc = wdAPP.Documents.Open("R:\01 EXPLOITS\DR CENTRE\09 COMMUN\1 AGENCE BOURGES\MENU\MENUS ADULTES\TempHD\ImpHD\Liste.doc")
wdAPP.Visible = True
Set wdDoc = wdAPP.Documents.Open("R:\01 EXPLOITS\DR CENTRE\09 COMMUN\1 AGENCE BOURGES\MENU\MENUS ADULTES\TempHD\ImpHD\Etiquette.doc")
With wdAPP.Documents("Etiquette").MailMerge
'With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
'End With
wdAPP.Visible = False
Le fichier Excel n'est plus ouvert à ce stade, j'ai une liaison avec un fichier "liste" de word qui sert de base pour le fichier "Etiquette" avant publipostage.
dsl de te reposer une question, mais en fait j'ai besoin de savoir comment tu appelle ton code vba ?
Si tu l'appelle depuis le fichier excel d'origine ou d'une autre facon ?
Si c'est depuis le fichier d'excel d'origine, ce fichier se trouvet'il lui aussi au path : "R:\01 EXPLOITS\DR CENTRE\09 COMMUN\1 AGENCE BOURGES\MENU\MENUS ADULTES\TempHD\ImpHD\" ?
Le fichier excel d'où ja lance la macro est dans :
R:\01 EXPLOITS\DR CENTRE\09 COMMUN\1 AGENCE BOURGES\MENU\MENUS ADULTES\"
Le fichier temporaire excel qui sert à la fusion avec Word est dans :
R:\01 EXPLOITS\DR CENTRE\09 COMMUN\1 AGENCE BOURGES\MENU\MENUS ADULTES\TempHD\"
Les 2 fichiers Word qui servent, 1 à la liaison avec Temp (excel) et 1 au publipostage se trouvent dans :
R:\01 EXPLOITS\DR CENTRE\09 COMMUN\1 AGENCE BOURGES\MENU\MENUS ADULTES\TempHD\ImpHD\"
Ce que tu peux essayer : Creer un nouveau dossier ou tu regroupe tous les fichiers dont tu as besoin : le fichier excel, le temp excel et les deux doc.
Ensuite, ce que je te propose, c'est d'essayer de remplacer ton path, qui a l'heure actuelle est en absolu, par un path relatif. Je te donne un exemple pour ton code.
Voici ton code d'origine :
Essayes cela, et tiens moi au courant voir si ca marche.
Attention a ne pas oublier d'appliquer cette modif sur tous les paths presents dans ton code !