Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécuter une macro Word à partir d'Excel (publipostage)

25 réponses
Avatar
mel63
Bonjour,

Je sais que cette question vous paraitra vu et revue mais cela fait 2 jours que je cherche sur internet et que je n'ai pas trouvé de solution à mon problème.

Je souhaite effectuer un publipostage avec Word à partir de données Excel. Jusque là tout est ok.
J'ai aussi fait une macro Word pour pouvoir créer un fichier word par facture créée. C'est ok aussi.

Sauf que j'aimerai pouvoir lancer ma macro Word à partir d'Excel. J'ai trouvé le code suivant :
Sub Facture()

Dim oWdApp As Word.Application

'Lancer Word
Set oWdApp = CreateObject("Word.Application")

With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
.Documents.Open ("source du doc")
'Exécuter la macro
'.Run "EnregFacture"

End With

'Libérer les ressources
Set oWdApp = Nothing

End Sub

Word s'ouvre bien mais c'est tout ! La macro de Word ne semble pas se lancer ...

En plus de ça, serait-il possible de pouvoir faire le publipostage à partir d'Excel en choisissant les lignes concernées par l'envoi ?

Merci d'avance pour votre aide (je sature !)

10 réponses

1 2 3
Avatar
Sibusate
mel63 a formulé ce jeudi :
Bonjour,
Je sais que cette question vous paraitra vu et revue mais cela fait 2 jours
que je cherche sur internet et que je n'ai pas trouvé de solution à mon
problème.
Je souhaite effectuer un publipostage avec Word à partir de données Excel.
Jusque là tout est ok.
J'ai aussi fait une macro Word pour pouvoir créer un fichier word par facture
créée. C'est ok aussi.
Sauf que j'aimerai pouvoir lancer ma macro Word à partir d'Excel. J'ai trouvé
le code suivant :
Sub Facture()
Dim oWdApp As Word.Application
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
.Documents.Open ("source du doc")
'Exécuter la macro
'.Run "EnregFacture"
End With
'Libérer les ressources
Set oWdApp = Nothing
End Sub
Word s'ouvre bien mais c'est tout ! La macro de Word ne semble pas se lancer
...
En plus de ça, serait-il possible de pouvoir faire le publipostage à partir
d'Excel en choisissant les lignes concernées par l'envoi ?
Merci d'avance pour votre aide (je sature !)

A ma connaissance - mais je ne suis pas un spécialiste de Word - il y a
une option permettant de bloquer ou d'exécuter (automatiquement ?) des
macros à l'ouverture de Word.
Ne serait-ce pas de ce côté que tu dois chercher ?
--
François
Avatar
Geo
Bonjour
'.Run "EnregFacture"

Cette ligne est en commentaire, elle ne fera pas grand-chose.
Avatar
Michd
Bonjour,
Pour ajouter au commentaire de Geo, la macro doit être située dans un "MODULE STANDARD" pour que
cela fonctionne...
De plus si le nom du fichier Word contient un espace dans son nom, tu dois utiliser quelque chose
comme ceci. Cette approche fonctionne même s'il n'y a pas d'espace dans le nom du fichier Word. Ne
pas oublier le point d'exclamation devant le nom de la macro. (Ce qui suit n'a pas été testé,
cependant je ne dois pas être loin de la vérité! ;-))
Dim LaMacro As String
LaMacro = "'" & oWdApp.activedocument.name & "'!EnregFacture"
oWdApp.Run LaMacro
Si l'appel de la macro doit insérer des paramètres :
oWdApp.Run LaMacro, Paramètre1, Paramètres2
Ta procédure devient alors :
'---------------------------------------------------------------
Sub Test()
Dim oWdApp As Word.Application, LaMacro As String
Dim Chemin As String, Fichier As String
'*********Définir les variables***********
Chemin = "C:UsersTon ProfilDocuments"
Fichier = "MonFichierWord.docm"
'************************************
Set oWdApp = CreateObject("Word.application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
.Documents.Open (Chemin & Fichier)
LaMacro = "'" & .ActiveDocument.Name & "'!EnregFacture"
'Exécuter la macro
.Run LaMacro
End With
'Libérer les ressources
Set oWdApp = Nothing
End Sub
'---------------------------------------------------------------
MichD
Avatar
Michd
Oups! dans la procédure je déclare cette variable ainsi :
Dim oWdApp As Word.Application
Cette manière de procédure nécessite la déclaration de la référence "Word Application xx objects
library"
Pour ce faire, barre des menus / références / et tu coches cette bibliothèque dans la liste.
Afin d'éviter cela, tu peux déclarer la variable comme ceci :
Dim oWdApp As Object
MichD
Avatar
mel63
Le jeudi 12 Juillet 2018 à 14:30 par Sibusate :
mel63 a formulé ce jeudi :
Bonjour,
Je sais que cette question vous paraitra vu et revue mais cela fait 2 jours
que je cherche sur internet et que je n'ai pas trouvé de solution
à mon
problème.
Je souhaite effectuer un publipostage avec Word à partir de
données Excel.
Jusque là tout est ok.
J'ai aussi fait une macro Word pour pouvoir créer un fichier word par
facture
créée. C'est ok aussi.
Sauf que j'aimerai pouvoir lancer ma macro Word à partir d'Excel. J'ai
trouvé
le code suivant :
Sub Facture()
Dim oWdApp As Word.Application
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
.Documents.Open ("source du doc")
'Exécuter la macro
'.Run "EnregFacture"
End With
'Libérer les ressources
Set oWdApp = Nothing
End Sub
Word s'ouvre bien mais c'est tout ! La macro de Word ne semble pas se lancer
...
En plus de ça, serait-il possible de pouvoir faire le publipostage
à partir
d'Excel en choisissant les lignes concernées par l'envoi ?
Merci d'avance pour votre aide (je sature !)
A ma connaissance - mais je ne suis pas un spécialiste de Word - il y a
une option permettant de bloquer ou d'exécuter (automatiquement ?) des
macros à l'ouverture de Word.
Ne serait-ce pas de ce côté que tu dois chercher ?
--
François
Bonjour,
Merci pour ta réponse, j'ai bien tenté de faire démarrer automatiquement au lancement du fichier Word mais pas de résultat ...
Avatar
mel63
Le jeudi 12 Juillet 2018 à 14:48 par Geo :
Bonjour
'.Run "EnregFacture"
Cette ligne est en commentaire, elle ne fera pas grand-chose.
Bonjour,
Merci pour ta réponse je n'avais pas remarqué avoir copié cette erreur.
Mais en réalité j'ai tellement essayé toutes les solutions que cet " ' " est resté là. Justement c'est cette ligne qui ne marche pas si je l'active !
Avatar
mel63
Le jeudi 12 Juillet 2018 à 14:48 par Geo :
Bonjour
'.Run "EnregFacture"
Cette ligne est en commentaire, elle ne fera pas grand-chose.
Bonjour,
Merci pour ta réponse je n'avais pas remarqué avoir copié cette erreur.
Mais en réalité j'ai tellement essayé toutes les solutions que cet " ' " est resté là. Justement c'est cette ligne qui ne marche pas si je l'active !
Avatar
mel63
Le jeudi 12 Juillet 2018 à 14:48 par Geo :
Bonjour
'.Run "EnregFacture"
Cette ligne est en commentaire, elle ne fera pas grand-chose.
Bonjour,
Merci pour ta réponse je n'avais pas remarqué avoir copié cette erreur.
Mais en réalité j'ai tellement essayé toutes les solutions que cet " ' " est resté là. Justement c'est cette ligne qui ne marche pas si je l'active !
Avatar
mel63
Le jeudi 12 Juillet 2018 à 15:36 par Michd :
Bonjour,
Pour ajouter au commentaire de Geo, la macro doit être située dans
un "MODULE STANDARD" pour que
cela fonctionne...
De plus si le nom du fichier Word contient un espace dans son nom, tu dois
utiliser quelque chose
comme ceci. Cette approche fonctionne même s'il n'y a pas d'espace dans
le nom du fichier Word. Ne
pas oublier le point d'exclamation devant le nom de la macro. (Ce qui suit n'a
pas été testé,
cependant je ne dois pas être loin de la vérité! ;-))
Dim LaMacro As String
LaMacro = "'" & oWdApp.activedocument.name &
"'!EnregFacture"
oWdApp.Run LaMacro
Si l'appel de la macro doit insérer des paramètres :
oWdApp.Run LaMacro, Paramètre1, Paramètres2
Ta procédure devient alors :
'---------------------------------------------------------------
Sub Test()
Dim oWdApp As Word.Application, LaMacro As String
Dim Chemin As String, Fichier As String
'*********Définir les variables***********
Chemin = "C:UsersTon ProfilDocuments"
Fichier = "MonFichierWord.docm"
'************************************
Set oWdApp = CreateObject("Word.application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
.Documents.Open (Chemin & Fichier)
LaMacro = "'" & .ActiveDocument.Name &
"'!EnregFacture"
'Exécuter la macro
.Run LaMacro
End With
'Libérer les ressources
Set oWdApp = Nothing
End Sub
'---------------------------------------------------------------
MichD
Bonjour,
Merci pour ta réponse.
Je viens de tester ton code mais ça ne marche toujours pas ! La ligne Dim Chemin As String, Fichier As String ne lui plait pas.
Et il me met toujours un bug à ".Run LaMacro".
Il ouvre mon fichier word mais n'exécute pas la macro ...
Avatar
mel63
Le jeudi 12 Juillet 2018 à 12:16 par mel63 :
Bonjour,
Je sais que cette question vous paraitra vu et revue mais cela fait 2 jours que
je cherche sur internet et que je n'ai pas trouvé de solution à
mon problème.
Je souhaite effectuer un publipostage avec Word à partir de
données Excel. Jusque là tout est ok.
J'ai aussi fait une macro Word pour pouvoir créer un fichier word par
facture créée. C'est ok aussi.
Sauf que j'aimerai pouvoir lancer ma macro Word à partir d'Excel. J'ai
trouvé le code suivant :
Sub Facture()
Dim oWdApp As Word.Application
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
.Documents.Open ("source du doc")
'Exécuter la macro
'.Run "EnregFacture"
End With
'Libérer les ressources
Set oWdApp = Nothing
End Sub
Word s'ouvre bien mais c'est tout ! La macro de Word ne semble pas se lancer
...
En plus de ça, serait-il possible de pouvoir faire le publipostage
à partir d'Excel en choisissant les lignes concernées par l'envoi
?
Merci d'avance pour votre aide (je sature !)
Je pense qu'il y a déjà un problème par rapport à mon fichier de publipostage Word. En effet, comme il est relié au fichier Excel, il faut à chaque ouverture confirmer que l'on veut conserver le lien.
Or, dans le cas où j'active le fichier depuis Excel, il n'y a pas de demande de confirmation, le lien ne doit pas se faire.
1 2 3