Bonjour à tous,
je viens de passer mon après midi a essayer de faire réaliser un
publipostage Word à partir de mon fichier Excel mais je bloque.
Je m'explique : mon fichier excel contient une liste de données que je
veux publiposter. Le nom de mon fichier Excel pouvant changer j'ai
choisit de piloter le publipostage à partir du vba de mon fichier excel.
c'est ici, au chargement de opendatasource que ça ne marche pas. Le
fichier Word reste en attente, la liaison dde ne se fait pas. Cela me
semble normal dans la mesure où je demande à word de lire une base excel
alors que je suis en train d'excuter une macro de ce même fichier excel.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Voici un exemple créé par Jièl Goubert et publié sur ce forum. Perso. Je ne l'ai jamais testée. Évidemment, il faudra que tu l'adaptes à ton environnement.
IMPORTANT : dans ton projetVBA de ton fichier Excel, tu dois ajouter la référence suivante : Fenêtre de l'éditeur de code / barre des menus / outils / références / et tu coches : "Microsoft Word 12.0 Objects librairy" 12 -> selon la version d'office que tu as.
------------------------------------------------------- Function Publipostage()
Dim WdDoc As Word.Document Dim Chemin, Fichier, Chemin_Fichier, Source As String
' Récupère le chemin des fichiers de la feuille "saisie" ' cellule "Chemin" Chemin = Worksheets("Saisie").Range("Chemin")
' Récupère le nom du fichier de la feuille "saisie" ' cellule "Nom_Fichier" ' choisi dans une liste déroulante Fichier = "" + Worksheets("Saisie").Range("Nom_Fichier")
Chemin_Fichier = Chemin + Fichier
Source = "Procedure.xls" ' a modifier pour que ce soit variable
' Démarrer Word en ouvrant la lettre type Set WdDoc = GetObject(Chemin_Fichier, "Word.Document")
With WdDoc ' Masque Word .Application.Visible = False
' Créé la liaison à la base de données afin de pouvoir ' déplacer facilement les fichiers. ' Source contient le chemin d'accés au fichier .MailMerge.OpenDataSource _ Name:=Source, _ LinkToSource:=True, _ Format:=wdOpenFormatAuto, _ SQLStatement:="SELECT * FROM `Données_Mailing$`"
' Lancer la fusion du 1er et seul enreg vers un nouveau doc With .MailMerge .Destination = wdSendToNewDocument With .DataSource .FirstRecord = 1 .LastRecord = 1 End With .Execute Pause:úlse End With
' Affiche Word .Application.Visible = True
' Ferme le doc ayant servi de modèle sans l'enregistrer .Close (False)
End With
' Active Word Application.ActivateMicrosoftApp xlMicrosoftWord
' Libère la mémoire Set WdDoc = Nothing
End Function ------------------------------------------
"merguez07" a écrit dans le message de groupe de discussion : 4bd32124$0$16498$ Bonjour à tous, je viens de passer mon après midi a essayer de faire réaliser un publipostage Word à partir de mon fichier Excel mais je bloque.
Je m'explique : mon fichier excel contient une liste de données que je veux publiposter. Le nom de mon fichier Excel pouvant changer j'ai choisit de piloter le publipostage à partir du vba de mon fichier excel.
c'est ici, au chargement de opendatasource que ça ne marche pas. Le fichier Word reste en attente, la liaison dde ne se fait pas. Cela me semble normal dans la mesure où je demande à word de lire une base excel alors que je suis en train d'excuter une macro de ce même fichier excel.
Comment puis je m'en sortir ?
Bonjour,
Voici un exemple créé par Jièl Goubert et publié
sur ce forum. Perso. Je ne l'ai jamais testée.
Évidemment, il faudra que tu l'adaptes à ton
environnement.
IMPORTANT : dans ton projetVBA de ton fichier Excel, tu dois
ajouter la référence suivante :
Fenêtre de l'éditeur de code / barre des menus / outils / références /
et tu coches :
"Microsoft Word 12.0 Objects librairy"
12 -> selon la version d'office que tu as.
-------------------------------------------------------
Function Publipostage()
Dim WdDoc As Word.Document
Dim Chemin, Fichier, Chemin_Fichier, Source As String
' Récupère le chemin des fichiers de la feuille "saisie"
' cellule "Chemin"
Chemin = Worksheets("Saisie").Range("Chemin")
' Récupère le nom du fichier de la feuille "saisie"
' cellule "Nom_Fichier"
' choisi dans une liste déroulante
Fichier = "" + Worksheets("Saisie").Range("Nom_Fichier")
Chemin_Fichier = Chemin + Fichier
Source = "Procedure.xls" ' a modifier pour que ce soit variable
' Démarrer Word en ouvrant la lettre type
Set WdDoc = GetObject(Chemin_Fichier, "Word.Document")
With WdDoc
' Masque Word
.Application.Visible = False
' Créé la liaison à la base de données afin de pouvoir
' déplacer facilement les fichiers.
' Source contient le chemin d'accés au fichier
.MailMerge.OpenDataSource _
Name:=Source, _
LinkToSource:=True, _
Format:=wdOpenFormatAuto, _
SQLStatement:="SELECT * FROM `Données_Mailing$`"
' Lancer la fusion du 1er et seul enreg vers un nouveau doc
With .MailMerge
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse
End With
' Affiche Word
.Application.Visible = True
' Ferme le doc ayant servi de modèle sans l'enregistrer
.Close (False)
End With
' Active Word
Application.ActivateMicrosoftApp xlMicrosoftWord
' Libère la mémoire
Set WdDoc = Nothing
End Function
------------------------------------------
"merguez07" <xavierpowaga@free.fr> a écrit dans le message de groupe de discussion :
4bd32124$0$16498$426a74cc@news.free.fr...
Bonjour à tous,
je viens de passer mon après midi a essayer de faire réaliser un
publipostage Word à partir de mon fichier Excel mais je bloque.
Je m'explique : mon fichier excel contient une liste de données que je
veux publiposter. Le nom de mon fichier Excel pouvant changer j'ai
choisit de piloter le publipostage à partir du vba de mon fichier excel.
c'est ici, au chargement de opendatasource que ça ne marche pas. Le
fichier Word reste en attente, la liaison dde ne se fait pas. Cela me
semble normal dans la mesure où je demande à word de lire une base excel
alors que je suis en train d'excuter une macro de ce même fichier excel.
Voici un exemple créé par Jièl Goubert et publié sur ce forum. Perso. Je ne l'ai jamais testée. Évidemment, il faudra que tu l'adaptes à ton environnement.
IMPORTANT : dans ton projetVBA de ton fichier Excel, tu dois ajouter la référence suivante : Fenêtre de l'éditeur de code / barre des menus / outils / références / et tu coches : "Microsoft Word 12.0 Objects librairy" 12 -> selon la version d'office que tu as.
------------------------------------------------------- Function Publipostage()
Dim WdDoc As Word.Document Dim Chemin, Fichier, Chemin_Fichier, Source As String
' Récupère le chemin des fichiers de la feuille "saisie" ' cellule "Chemin" Chemin = Worksheets("Saisie").Range("Chemin")
' Récupère le nom du fichier de la feuille "saisie" ' cellule "Nom_Fichier" ' choisi dans une liste déroulante Fichier = "" + Worksheets("Saisie").Range("Nom_Fichier")
Chemin_Fichier = Chemin + Fichier
Source = "Procedure.xls" ' a modifier pour que ce soit variable
' Démarrer Word en ouvrant la lettre type Set WdDoc = GetObject(Chemin_Fichier, "Word.Document")
With WdDoc ' Masque Word .Application.Visible = False
' Créé la liaison à la base de données afin de pouvoir ' déplacer facilement les fichiers. ' Source contient le chemin d'accés au fichier .MailMerge.OpenDataSource _ Name:=Source, _ LinkToSource:=True, _ Format:=wdOpenFormatAuto, _ SQLStatement:="SELECT * FROM `Données_Mailing$`"
' Lancer la fusion du 1er et seul enreg vers un nouveau doc With .MailMerge .Destination = wdSendToNewDocument With .DataSource .FirstRecord = 1 .LastRecord = 1 End With .Execute Pause:úlse End With
' Affiche Word .Application.Visible = True
' Ferme le doc ayant servi de modèle sans l'enregistrer .Close (False)
End With
' Active Word Application.ActivateMicrosoftApp xlMicrosoftWord
' Libère la mémoire Set WdDoc = Nothing
End Function ------------------------------------------
"merguez07" a écrit dans le message de groupe de discussion : 4bd32124$0$16498$ Bonjour à tous, je viens de passer mon après midi a essayer de faire réaliser un publipostage Word à partir de mon fichier Excel mais je bloque.
Je m'explique : mon fichier excel contient une liste de données que je veux publiposter. Le nom de mon fichier Excel pouvant changer j'ai choisit de piloter le publipostage à partir du vba de mon fichier excel.
c'est ici, au chargement de opendatasource que ça ne marche pas. Le fichier Word reste en attente, la liaison dde ne se fait pas. Cela me semble normal dans la mesure où je demande à word de lire une base excel alors que je suis en train d'excuter une macro de ce même fichier excel.
Comment puis je m'en sortir ?
merguez07
merci pour ta réponse mais Helas cette autre façon d'ouvrir Word ne solutionne pas ma problématique. Le problème que j'ai c'est que ma base de donnée excel peut changer de nom. je suis donc dans l'obligation de télécommander le publipostage par excel pour donner à Word le nom de la source. ET comme je télecommande word par une macro excel appartenant à la source, word ne peut lire la source tant que je suis dans la macro Excel.
Je sais j'ai l'impression d'écrire du charabia
Dans le programme de Jièl Goubert la source est fixe (Procedure.xls) et n'est certainement pas celle où se trouve la macro excel de publipostage.
Après une nuit de sommeil j'y verrais peut être un peu plus claire
michdenis a écrit :
Bonjour,
Voici un exemple créé par Jièl Goubert et publié sur ce forum. Perso. Je ne l'ai jamais testée. Évidemment, il faudra que tu l'adaptes à ton environnement.
IMPORTANT : dans ton projetVBA de ton fichier Excel, tu dois ajouter la référence suivante : Fenêtre de l'éditeur de code / barre des menus / outils / références / et tu coches : "Microsoft Word 12.0 Objects librairy" 12 -> selon la version d'office que tu as.
------------------------------------------------------- Function Publipostage()
Dim WdDoc As Word.Document Dim Chemin, Fichier, Chemin_Fichier, Source As String
' Récupère le chemin des fichiers de la feuille "saisie" ' cellule "Chemin" Chemin = Worksheets("Saisie").Range("Chemin")
' Récupère le nom du fichier de la feuille "saisie" ' cellule "Nom_Fichier" ' choisi dans une liste déroulante Fichier = "" + Worksheets("Saisie").Range("Nom_Fichier")
Chemin_Fichier = Chemin + Fichier
Source = "Procedure.xls" ' a modifier pour que ce soit variable
' Démarrer Word en ouvrant la lettre type Set WdDoc = GetObject(Chemin_Fichier, "Word.Document")
With WdDoc ' Masque Word .Application.Visible = False
' Créé la liaison à la base de données afin de pouvoir ' déplacer facilement les fichiers. ' Source contient le chemin d'accés au fichier .MailMerge.OpenDataSource _ Name:=Source, _ LinkToSource:=True, _ Format:=wdOpenFormatAuto, _ SQLStatement:="SELECT * FROM `Données_Mailing$`"
' Lancer la fusion du 1er et seul enreg vers un nouveau doc With .MailMerge .Destination = wdSendToNewDocument With .DataSource .FirstRecord = 1 .LastRecord = 1 End With .Execute Pause:úlse End With
' Affiche Word .Application.Visible = True
' Ferme le doc ayant servi de modèle sans l'enregistrer .Close (False)
End With
' Active Word Application.ActivateMicrosoftApp xlMicrosoftWord
' Libère la mémoire Set WdDoc = Nothing
End Function ------------------------------------------
"merguez07" a écrit dans le message de groupe de discussion : 4bd32124$0$16498$ Bonjour à tous, je viens de passer mon après midi a essayer de faire réaliser un publipostage Word à partir de mon fichier Excel mais je bloque.
Je m'explique : mon fichier excel contient une liste de données que je veux publiposter. Le nom de mon fichier Excel pouvant changer j'ai choisit de piloter le publipostage à partir du vba de mon fichier excel.
c'est ici, au chargement de opendatasource que ça ne marche pas. Le fichier Word reste en attente, la liaison dde ne se fait pas. Cela me semble normal dans la mesure où je demande à word de lire une base excel alors que je suis en train d'excuter une macro de ce même fichier excel.
Comment puis je m'en sortir ?
merci pour ta réponse mais Helas cette autre façon d'ouvrir Word ne
solutionne pas ma problématique. Le problème que j'ai c'est que ma base
de donnée excel peut changer de nom. je suis donc dans l'obligation de
télécommander le publipostage par excel pour donner à Word le nom de la
source. ET comme je télecommande word par une macro excel appartenant à
la source, word ne peut lire la source tant que je suis dans la macro Excel.
Je sais j'ai l'impression d'écrire du charabia
Dans le programme de Jièl Goubert la source est fixe (Procedure.xls) et
n'est certainement pas celle où se trouve la macro excel de publipostage.
Après une nuit de sommeil j'y verrais peut être un peu plus claire
michdenis a écrit :
Bonjour,
Voici un exemple créé par Jièl Goubert et publié
sur ce forum. Perso. Je ne l'ai jamais testée.
Évidemment, il faudra que tu l'adaptes à ton
environnement.
IMPORTANT : dans ton projetVBA de ton fichier Excel, tu dois
ajouter la référence suivante :
Fenêtre de l'éditeur de code / barre des menus / outils / références /
et tu coches :
"Microsoft Word 12.0 Objects librairy"
12 -> selon la version d'office que tu as.
-------------------------------------------------------
Function Publipostage()
Dim WdDoc As Word.Document
Dim Chemin, Fichier, Chemin_Fichier, Source As String
' Récupère le chemin des fichiers de la feuille "saisie"
' cellule "Chemin"
Chemin = Worksheets("Saisie").Range("Chemin")
' Récupère le nom du fichier de la feuille "saisie"
' cellule "Nom_Fichier"
' choisi dans une liste déroulante
Fichier = "" + Worksheets("Saisie").Range("Nom_Fichier")
Chemin_Fichier = Chemin + Fichier
Source = "Procedure.xls" ' a modifier pour que ce soit variable
' Démarrer Word en ouvrant la lettre type
Set WdDoc = GetObject(Chemin_Fichier, "Word.Document")
With WdDoc
' Masque Word
.Application.Visible = False
' Créé la liaison à la base de données afin de pouvoir
' déplacer facilement les fichiers.
' Source contient le chemin d'accés au fichier
.MailMerge.OpenDataSource _
Name:=Source, _
LinkToSource:=True, _
Format:=wdOpenFormatAuto, _
SQLStatement:="SELECT * FROM `Données_Mailing$`"
' Lancer la fusion du 1er et seul enreg vers un nouveau doc
With .MailMerge
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse
End With
' Affiche Word
.Application.Visible = True
' Ferme le doc ayant servi de modèle sans l'enregistrer
.Close (False)
End With
' Active Word
Application.ActivateMicrosoftApp xlMicrosoftWord
' Libère la mémoire
Set WdDoc = Nothing
End Function
------------------------------------------
"merguez07" <xavierpowaga@free.fr> a écrit dans le message de groupe de discussion :
4bd32124$0$16498$426a74cc@news.free.fr...
Bonjour à tous,
je viens de passer mon après midi a essayer de faire réaliser un
publipostage Word à partir de mon fichier Excel mais je bloque.
Je m'explique : mon fichier excel contient une liste de données que je
veux publiposter. Le nom de mon fichier Excel pouvant changer j'ai
choisit de piloter le publipostage à partir du vba de mon fichier excel.
c'est ici, au chargement de opendatasource que ça ne marche pas. Le
fichier Word reste en attente, la liaison dde ne se fait pas. Cela me
semble normal dans la mesure où je demande à word de lire une base excel
alors que je suis en train d'excuter une macro de ce même fichier excel.
merci pour ta réponse mais Helas cette autre façon d'ouvrir Word ne solutionne pas ma problématique. Le problème que j'ai c'est que ma base de donnée excel peut changer de nom. je suis donc dans l'obligation de télécommander le publipostage par excel pour donner à Word le nom de la source. ET comme je télecommande word par une macro excel appartenant à la source, word ne peut lire la source tant que je suis dans la macro Excel.
Je sais j'ai l'impression d'écrire du charabia
Dans le programme de Jièl Goubert la source est fixe (Procedure.xls) et n'est certainement pas celle où se trouve la macro excel de publipostage.
Après une nuit de sommeil j'y verrais peut être un peu plus claire
michdenis a écrit :
Bonjour,
Voici un exemple créé par Jièl Goubert et publié sur ce forum. Perso. Je ne l'ai jamais testée. Évidemment, il faudra que tu l'adaptes à ton environnement.
IMPORTANT : dans ton projetVBA de ton fichier Excel, tu dois ajouter la référence suivante : Fenêtre de l'éditeur de code / barre des menus / outils / références / et tu coches : "Microsoft Word 12.0 Objects librairy" 12 -> selon la version d'office que tu as.
------------------------------------------------------- Function Publipostage()
Dim WdDoc As Word.Document Dim Chemin, Fichier, Chemin_Fichier, Source As String
' Récupère le chemin des fichiers de la feuille "saisie" ' cellule "Chemin" Chemin = Worksheets("Saisie").Range("Chemin")
' Récupère le nom du fichier de la feuille "saisie" ' cellule "Nom_Fichier" ' choisi dans une liste déroulante Fichier = "" + Worksheets("Saisie").Range("Nom_Fichier")
Chemin_Fichier = Chemin + Fichier
Source = "Procedure.xls" ' a modifier pour que ce soit variable
' Démarrer Word en ouvrant la lettre type Set WdDoc = GetObject(Chemin_Fichier, "Word.Document")
With WdDoc ' Masque Word .Application.Visible = False
' Créé la liaison à la base de données afin de pouvoir ' déplacer facilement les fichiers. ' Source contient le chemin d'accés au fichier .MailMerge.OpenDataSource _ Name:=Source, _ LinkToSource:=True, _ Format:=wdOpenFormatAuto, _ SQLStatement:="SELECT * FROM `Données_Mailing$`"
' Lancer la fusion du 1er et seul enreg vers un nouveau doc With .MailMerge .Destination = wdSendToNewDocument With .DataSource .FirstRecord = 1 .LastRecord = 1 End With .Execute Pause:úlse End With
' Affiche Word .Application.Visible = True
' Ferme le doc ayant servi de modèle sans l'enregistrer .Close (False)
End With
' Active Word Application.ActivateMicrosoftApp xlMicrosoftWord
' Libère la mémoire Set WdDoc = Nothing
End Function ------------------------------------------
"merguez07" a écrit dans le message de groupe de discussion : 4bd32124$0$16498$ Bonjour à tous, je viens de passer mon après midi a essayer de faire réaliser un publipostage Word à partir de mon fichier Excel mais je bloque.
Je m'explique : mon fichier excel contient une liste de données que je veux publiposter. Le nom de mon fichier Excel pouvant changer j'ai choisit de piloter le publipostage à partir du vba de mon fichier excel.
c'est ici, au chargement de opendatasource que ça ne marche pas. Le fichier Word reste en attente, la liaison dde ne se fait pas. Cela me semble normal dans la mesure où je demande à word de lire une base excel alors que je suis en train d'excuter une macro de ce même fichier excel.