Bonjour,

J'utilise un fichier excel, qui alimente un onglet dédié au publipostage avant de lancer ce dernier, en appelant un doc word.
En fin de publipostage, je souhaite effacer les données provisoires sur excel, après la fin du publipostage sous word.

C'est donc Word qui appelle ma macro d'effacement des données sous excel... lorsque je l'exécute en pas à pas, tout fonctionne nikel, mais en "automatique", elle ne fait pas son job... c'est a n'y rien comprendre !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Sub Document_Open()
'
 
Dim nombase As String
nombase = ActiveDocument.Path & "\toto.xls"
 
    ActiveDocument.MailMerge.MainDocumentType = wdNotAMergeDocument
 
    ActiveDocument.MailMerge.OpenDataSource Name:= _
 
'**********je supprime le code relatif au publipost qui marche et n'a pas d'intérêt pour la question ************
 
        .Execute Pause:=False
 
    End With
 
Documents("edittoto.doc").Activate
 
' ici, j'ai testé avec call effacedata mais idem: marche en pas à pas et pas en "automatique"
 
MsgBox "effacedata"
 
Dim xlApp As Object
Dim xlBook As Object
Chemin = ActiveDocument.Path
 
    Set xlApp = GetObject(, "Excel.Application")
    Set xlApp = GetObject(Chemin & "\toto.xls")
    Set xlBook = xlApp.Application.ActiveWorkbook
 
MsgBox "avant run macro"
 
   xlBook.Application.Run "'toto.xls'!Module9.effacepublipost"
 
 
 Set xlApp = Nothing
 Set xlBook = Nothing
 
Documents("edittoto.doc").Close False
End Sub
 
 
'*******Idem si je fais une macro à part avec le même code...**************
 
Sub effacedata()
'
' effacedata Macro
'
MsgBox "effacedata"
 
Dim xlApp As Object
Dim xlBook As Object
Chemin = ActiveDocument.Path
 
    Set xlApp = GetObject(, "Excel.Application")
    Set xlApp = GetObject(Chemin & "\toto.xls")
    Set xlBook = xlApp.Application.ActiveWorkbook
 
MsgBox "avant run macro"
 
   xlBook.Application.Run "'toto.xls'!Module9.effacepublipost"
 
 Set xlApp = Nothing
 Set xlBook = Nothing
End Sub
Pour résumer, en pas à pas dans l'éditeur, cela fonctionne parfaitement: le publipostage se fait, les msgbox apparaissent au fil du déroulement de la partie "j'appelle excel depuis word", et finalement, la macro excel s'exécute comme demandé par word.

Si j'appelle depuis excel, le doc de fusion est ouvert comme demandé et soit je fait:
  • shift ok à l'activation des macros du doc word et choix "exécution pas à pas", et tout fonctionne: le publipostage se fait et les données devenues inutiles dans excel sont effacées...
  • Soit juste "activer les macros" du doc word et je n'obtient que le publipost, pas l'effacement des données temporaires sous excel...


Voilà, mes compétences en VBA étant quasi nulles, je n'y comprend rien ! HELP