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

Fusion à partir d'un bouton dans excel

3 réponses
Avatar
Alex St-Pierre
Bonjour,
J'aimerais avoir un bouton dans Excel qui démarre une macro dans Word. Cette
macro fait une fusion de document et modifie par la suite, le document word
(tableau) en fonction de données dans excel. En fait, la macro est démarré
dans le fichier excel qui sert à la fusion.

Voici ma programmation: (Est-ce quelqu'un pourrait me dire comment faire
pour rester la macro en fermant le classeur qui contient cette macro ?)
sub macro_excel()
Dim strExcel as String
Dim strWord as Object
strExcel = ActiveWorkbook.Name '(ex: c:/temp.xls)
ActiveWorkbook.Close 'Ceci arrête la macro ?? comment faire pour rester dans
la macro sans le classeur ouvert ?
Set strWord = "C:\temp.doc"
'Lorsque le document word s'ouvre, il ouvre le fichier excel qui vient
d'être fermé.
strWord.lamacrofusion
End sub
--
Alex St-Pierre

3 réponses

Avatar
JièL Goubert
Bonjoir© Alex St-Pierre

Le 19/03/2006 17:49 vous avez écrit... :
Bonjour,

Voici ma programmation: (Est-ce quelqu'un pourrait me dire comment faire
pour rester la macro en fermant le classeur qui contient cette macro ?)


Heum... comment laisser la lumière allumé dans l'ampoule si je coupe le
courant ?! ;-)))))))))))

sub macro_excel()
Dim strExcel as String
Dim strWord as Object
strExcel = ActiveWorkbook.Name '(ex: c:/temp.xls)
ActiveWorkbook.Close 'Ceci arrête la macro ?? comment faire pour rester dans
la macro sans le classeur ouvert ?


Pourquoi vouloir fermer le classeur ? A la rigueur je mettrais bien
Excel en icône ou masqué, non ?

Set strWord = "C:temp.doc"
'Lorsque le document word s'ouvre, il ouvre le fichier excel qui vient
d'être fermé.
strWord.lamacrofusion
End sub


voici un exemple de macro qui lance une fusion dans Word à partir d'Excel

------------------------------------
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
------------------------------------------

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr

Avatar
Alex St-Pierre
Bonjour Jiel,
La programmation que tu as envoyé est très utile. Dans mon cas, le fait que
le fichier de départ de la Macro est le même que celui qui sert à la fusion
semble causer problème lors de l'établissement de la liaison DDE ? Word a
besoin de fermer excel pour établir la connexion DDE ?

Dans ton exemple, si je met:
Source = ActiveWorkbook.Path & "" ActiveWorkbook.Name
est-ce que tu sais comment modifier la programmation pour ajuster les
questions posé par word. exemple: demande la fermeture du fichier excel ?
Note que la macro qui fait la fusion est dans word; donc, je dois appeller
la macro avec:
With WdDoc
.Macro1.Execute (?) 'je dois transférer une variable de excel à word
qui est le path du fichier excel et avec ça, tout devrait bien fonctionner.
End With

Merci !
--
Alex St-Pierre


"JièL Goubert" wrote:

Bonjoir© Alex St-Pierre

Le 19/03/2006 17:49 vous avez écrit... :
Bonjour,

Voici ma programmation: (Est-ce quelqu'un pourrait me dire comment faire
pour rester la macro en fermant le classeur qui contient cette macro ?)


Heum... comment laisser la lumière allumé dans l'ampoule si je coupe le
courant ?! ;-)))))))))))

sub macro_excel()
Dim strExcel as String
Dim strWord as Object
strExcel = ActiveWorkbook.Name '(ex: c:/temp.xls)
ActiveWorkbook.Close 'Ceci arrête la macro ?? comment faire pour rester dans
la macro sans le classeur ouvert ?


Pourquoi vouloir fermer le classeur ? A la rigueur je mettrais bien
Excel en icône ou masqué, non ?

Set strWord = "C:temp.doc"
'Lorsque le document word s'ouvre, il ouvre le fichier excel qui vient
d'être fermé.
strWord.lamacrofusion
End sub


voici un exemple de macro qui lance une fusion dans Word à partir d'Excel

------------------------------------
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
------------------------------------------

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr




Avatar
JièL Goubert
Bonjoir(c) Alex St-Pierre

Bonjour Jiel,
La programmation que tu as envoyé est très utile. Dans mon cas, le fait que
le fichier de départ de la Macro est le même que celui qui sert à la fusion


Moi aussi

semble causer problème lors de l'établissement de la liaison DDE ? Word a
besoin de fermer excel pour établir la connexion DDE ?


Heum... pourquoi passer par le DDE si ça pose des soucis ?

Dans ton exemple, si je met:
Source = ActiveWorkbook.Path & "" ActiveWorkbook.Name
est-ce que tu sais comment modifier la programmation pour ajuster les
questions posé par word.


Quelle question ? si vous utilisez ceci
-------------------
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)

-----------------------------
y'a pas de question, ou du moins les réponses sans dans le code


exemple: demande la fermeture du fichier excel ?


Je repose donc la question : pourquoi vouloir fermer Excel, tout peut
être piloter via l'automation

Note que la macro qui fait la fusion est dans word


Et pourquoi faire ??? soit vous faites tout avec l'un, soit tout avec
l'autre, mais les mélanges ont sais bien que c'est jamais bon ;-)


'je dois transférer une variable de excel à word


Alors la bon courage... déjà que pour passer des données d'une macro à
une autre dans la même appli c'est pas glop...

Merci !


Désolé de ne pouvoir vous aider plus, mais je suis au bout de mes
connaissances macrotesque ;-)

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr