J'ai une petite question pour reprendre le boulot tout doucement :=)
Est il possible de generer un document word à partir d'access dont une
partie uniquement de la fusion est de type publipostage ?
J'explicite un peu
j'aimerai editer un rapport pour lequel j'indique le nom du client,
adresse etc. puis différentes informations telles que le code article,
la description, ... qui peut etre au nombre de 0 à x.
Les docs de chacun (des sites internet) parlent des 2 aspects mais de
façon independantes.
Il est vrai qu'en cherchant un peu je devrais trouver pour faire mon
automation. ;) mais c'est le retour de vacances alors ... j'ai un peu
la flemme.
merci
ja;)
qui est de retour de vacances pour son plus grand malheur :=)
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
Evaro
Bonjour Joyeux Atchoum,
"joyeux atchoum" a écrit dans le message de news:
S'lt à tous
J'ai une petite question pour reprendre le boulot tout doucement :=)
Est il possible de generer un document word à partir d'access dont une partie uniquement de la fusion est de type publipostage ?
Le document Principal de fusion doit exister et être liée à une table ou requête ACCESS. Tous mes documents principaux sont dans un sous-dossier mailing, et l'utilisateur en choisit un à l'aide d'une lste déroulante.
Public Sub LanceWord(ndc As String, strSource As String, intDirect As Integer) ' Ouvre Word avec le document ndc dans le dossier mailing. ' réalise directement la fusion si intDirect vaut 1 ' sinon permet de modifier le document principal. Dim wApp As Word.Application Dim D1 As Word.Document, xn As String On Error GoTo PbWord Set wApp = CreateObject("Word.Application") wApp.Visible = True Set D1 = wApp.Documents.Open(Application.CurrentProject.Path & "Mailing" & ndc) D1.MailMerge.OpenDataSource Name:=Application.CurrentDb.Name,Connection:=strSource If intDirect = 1 Then D1.MailMerge.Destination = wdSendToNewDocument D1.MailMerge.Execute End If Set wApp = Nothing Sortie: Exit Sub PbWord: If Err = 5631 Then ' Pas d'enregistrements. Set D1 = wApp.ActiveDocument If D1.MailMerge.DataSource.ConnectString <> strSource Then ' Erreur déclenchée par "Set D1 = ..." ' si strSource a été modifié depuis le dernier appel du sub. Resume Next Else MsgBox ("Word n'a trouvé aucun enregistrement à fusionner") wApp.Quit Set wApp = Nothing Resume Sortie End If End If If Err = 5535 Then MsgBox ("Interruption par l'utilisateur") wApp.Quit Set wApp = Nothing Resume Sortie End If MsgBox ("Erreur" & Err & " : " & Error$(Err) & " en procédure lanceWord") Stop Resume Sortie ' Stop End Sub
Courage, plus que 4 jours avant le week-end !
-- @ + Etienne Charte du forum: http://users.skynet.be/mpfa/charte.htm
Bonjour Joyeux Atchoum,
"joyeux atchoum" <azasf@hj.gt> a écrit dans le message de news:
MPG.19b598566fbd19769897e6@127.0.0.1...
S'lt à tous
J'ai une petite question pour reprendre le boulot tout doucement :=)
Est il possible de generer un document word à partir d'access dont une
partie uniquement de la fusion est de type publipostage ?
Le document Principal de fusion doit exister et être liée à une table ou
requête ACCESS.
Tous mes documents principaux sont dans un sous-dossier mailing, et
l'utilisateur en choisit un à l'aide d'une lste déroulante.
Public Sub LanceWord(ndc As String, strSource As String, intDirect As
Integer)
' Ouvre Word avec le document ndc dans le dossier mailing.
' réalise directement la fusion si intDirect vaut 1
' sinon permet de modifier le document principal.
Dim wApp As Word.Application
Dim D1 As Word.Document, xn As String
On Error GoTo PbWord
Set wApp = CreateObject("Word.Application")
wApp.Visible = True
Set D1 = wApp.Documents.Open(Application.CurrentProject.Path &
"Mailing" & ndc)
D1.MailMerge.OpenDataSource
Name:=Application.CurrentDb.Name,Connection:=strSource
If intDirect = 1 Then
D1.MailMerge.Destination = wdSendToNewDocument
D1.MailMerge.Execute
End If
Set wApp = Nothing
Sortie:
Exit Sub
PbWord:
If Err = 5631 Then
' Pas d'enregistrements.
Set D1 = wApp.ActiveDocument
If D1.MailMerge.DataSource.ConnectString <> strSource Then
' Erreur déclenchée par "Set D1 = ..."
' si strSource a été modifié depuis le dernier appel du sub.
Resume Next
Else
MsgBox ("Word n'a trouvé aucun enregistrement à fusionner")
wApp.Quit
Set wApp = Nothing
Resume Sortie
End If
End If
If Err = 5535 Then
MsgBox ("Interruption par l'utilisateur")
wApp.Quit
Set wApp = Nothing
Resume Sortie
End If
MsgBox ("Erreur" & Err & " : " & Error$(Err) & " en procédure
lanceWord")
Stop
Resume Sortie
' Stop
End Sub
Courage, plus que 4 jours avant le week-end !
--
@ +
Etienne
Charte du forum: http://users.skynet.be/mpfa/charte.htm
J'ai une petite question pour reprendre le boulot tout doucement :=)
Est il possible de generer un document word à partir d'access dont une partie uniquement de la fusion est de type publipostage ?
Le document Principal de fusion doit exister et être liée à une table ou requête ACCESS. Tous mes documents principaux sont dans un sous-dossier mailing, et l'utilisateur en choisit un à l'aide d'une lste déroulante.
Public Sub LanceWord(ndc As String, strSource As String, intDirect As Integer) ' Ouvre Word avec le document ndc dans le dossier mailing. ' réalise directement la fusion si intDirect vaut 1 ' sinon permet de modifier le document principal. Dim wApp As Word.Application Dim D1 As Word.Document, xn As String On Error GoTo PbWord Set wApp = CreateObject("Word.Application") wApp.Visible = True Set D1 = wApp.Documents.Open(Application.CurrentProject.Path & "Mailing" & ndc) D1.MailMerge.OpenDataSource Name:=Application.CurrentDb.Name,Connection:=strSource If intDirect = 1 Then D1.MailMerge.Destination = wdSendToNewDocument D1.MailMerge.Execute End If Set wApp = Nothing Sortie: Exit Sub PbWord: If Err = 5631 Then ' Pas d'enregistrements. Set D1 = wApp.ActiveDocument If D1.MailMerge.DataSource.ConnectString <> strSource Then ' Erreur déclenchée par "Set D1 = ..." ' si strSource a été modifié depuis le dernier appel du sub. Resume Next Else MsgBox ("Word n'a trouvé aucun enregistrement à fusionner") wApp.Quit Set wApp = Nothing Resume Sortie End If End If If Err = 5535 Then MsgBox ("Interruption par l'utilisateur") wApp.Quit Set wApp = Nothing Resume Sortie End If MsgBox ("Erreur" & Err & " : " & Error$(Err) & " en procédure lanceWord") Stop Resume Sortie ' Stop End Sub
Courage, plus que 4 jours avant le week-end !
-- @ + Etienne Charte du forum: http://users.skynet.be/mpfa/charte.htm
Raymond
Bonsoir joyeux atchoum.
as-tu regardé ma page : http://access.seneque.free.fr/signets1.htm
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"joyeux atchoum" a écrit dans le message de news:
S'lt etienne
merci pour ta reponse, instructive mais ... ) en fait je viens de realiser que je n'emploie pas la bonne terminologie, arghh (mais où va le monde ?)
en fait ce n'est pas une fusion mais le contraire que j'effectue, c'est depuis access que je remplis des signets presents dans le document principal.
il est possible que je me trompe encore dans le vocabulaire mais bon je progresse et puis la reprise doit etre tranquille, non ? ;=)
merci encore ja:=)
qui aimerait refaire des grasse mat (c'est pas demain la veille)
Bonsoir joyeux atchoum.
as-tu regardé ma page : http://access.seneque.free.fr/signets1.htm
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.
"joyeux atchoum" <azasf@hj.gt> a écrit dans le message de
news:MPG.19b674ad8d3b08f09897e7@127.0.0.1...
S'lt etienne
merci pour ta reponse, instructive mais ... )
en fait je viens de realiser que je n'emploie pas la bonne
terminologie, arghh (mais où va le monde ?)
en fait ce n'est pas une fusion mais le contraire que j'effectue, c'est
depuis access que je remplis des signets presents dans le document
principal.
il est possible que je me trompe encore dans le vocabulaire mais bon je
progresse et puis la reprise doit etre tranquille, non ? ;=)
merci encore
ja:=)
qui aimerait refaire des grasse mat (c'est pas demain la veille)
as-tu regardé ma page : http://access.seneque.free.fr/signets1.htm
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"joyeux atchoum" a écrit dans le message de news:
S'lt etienne
merci pour ta reponse, instructive mais ... ) en fait je viens de realiser que je n'emploie pas la bonne terminologie, arghh (mais où va le monde ?)
en fait ce n'est pas une fusion mais le contraire que j'effectue, c'est depuis access que je remplis des signets presents dans le document principal.
il est possible que je me trompe encore dans le vocabulaire mais bon je progresse et puis la reprise doit etre tranquille, non ? ;=)
merci encore ja:=)
qui aimerait refaire des grasse mat (c'est pas demain la veille)
joyeux atchoum
S'lt Raymond
as-tu regardé ma page : http://access.seneque.free.fr/signets1.htm
oui avant les vacances ;=) c'est comme ça que je procede pour remplir mes doc, mais je n'avais pas encore tester avec une boucle pour remplir à nouveau des signets mais comme je viens de voir que cela ne semble pas poser de pb (selon ton exemple publipostage.htm)
Je vais tenter et je reviens si je coince sur un truc
P.S. j'avais prevenu que mon demarrage serait difficile ;=)
ja;) qui as deja un WE de 3 jours, (pas serieux tout ça ;=) )
S'lt Raymond
as-tu regardé ma page : http://access.seneque.free.fr/signets1.htm
oui avant les vacances ;=)
c'est comme ça que je procede pour remplir mes doc,
mais je n'avais pas encore tester avec une boucle pour remplir à
nouveau des signets
mais comme je viens de voir que cela ne semble pas poser de pb (selon
ton exemple publipostage.htm)
Je vais tenter et je reviens si je coince sur un truc
P.S. j'avais prevenu que mon demarrage serait difficile ;=)
ja;)
qui as deja un WE de 3 jours, (pas serieux tout ça ;=) )
as-tu regardé ma page : http://access.seneque.free.fr/signets1.htm
oui avant les vacances ;=) c'est comme ça que je procede pour remplir mes doc, mais je n'avais pas encore tester avec une boucle pour remplir à nouveau des signets mais comme je viens de voir que cela ne semble pas poser de pb (selon ton exemple publipostage.htm)
Je vais tenter et je reviens si je coince sur un truc
P.S. j'avais prevenu que mon demarrage serait difficile ;=)
ja;) qui as deja un WE de 3 jours, (pas serieux tout ça ;=) )
Raymond
Bonjour.
Pour atteindre le pied de page il faut lancer la fonction: AppWord.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"joyeux atchoum" a écrit dans le message de news:
S'lt
Finalement l'exemple sur http://mypage.bluewin.ch/w.stucki/Integration.htm#ExporterWord repond mon besoin C'est pas du beau truc que j'ai fait mais cela semble marcher maintenant il faut que j'ameliore le tout.
Finalement j'ai une derniere question comment fait on pour atteindre le pied de page d'un document word j'ai mis un signet mais celui ci n'est pas rempli, et je n'ai rien vu à ce propos sur mes premiers sites de references.
voili
merci encore pour l'aide ;=) ja;)
ja qui finalement aime bien la reprise ;=)
Bonjour.
Pour atteindre le pied de page il faut lancer la fonction:
AppWord.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.
"joyeux atchoum" <azasf@hj.gt> a écrit dans le message de
news:MPG.19b7ec17c871630f9897ea@127.0.0.1...
S'lt
Finalement l'exemple sur
http://mypage.bluewin.ch/w.stucki/Integration.htm#ExporterWord repond
mon besoin
C'est pas du beau truc que j'ai fait mais cela semble marcher
maintenant il faut que j'ameliore le tout.
Finalement j'ai une derniere question comment fait on pour atteindre le
pied de page d'un document word
j'ai mis un signet mais celui ci n'est pas rempli, et je n'ai rien vu à
ce propos sur mes premiers sites de references.
Pour atteindre le pied de page il faut lancer la fonction: AppWord.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"joyeux atchoum" a écrit dans le message de news:
S'lt
Finalement l'exemple sur http://mypage.bluewin.ch/w.stucki/Integration.htm#ExporterWord repond mon besoin C'est pas du beau truc que j'ai fait mais cela semble marcher maintenant il faut que j'ameliore le tout.
Finalement j'ai une derniere question comment fait on pour atteindre le pied de page d'un document word j'ai mis un signet mais celui ci n'est pas rempli, et je n'ai rien vu à ce propos sur mes premiers sites de references.
voili
merci encore pour l'aide ;=) ja;)
ja qui finalement aime bien la reprise ;=)
joyeux atchoum
S'lt
voili la reponse que j'ai eu sur la faq word (voir plus bas)
il semblerait que lorsque on est dans le bas de page, la commande atteindre supprime l'affichage du bas de page et de ce fait le signet ne peut être atteint. il va falloir que tu poses la question sur le forum word, ils doivent savoir.
effectivement ils savent ;=)
Pour ma part cela ne marche pas encore nickel chrome car je declare mon serveur d'application comme un ... (je prefere taire le nom, faut mieux pour nos oreilles) :=) Donc je dois ameliorer ma creation de documents
Mais cela marche bien sisi
Il faut penser à rajouter la gestion d'erreur
donc si cela peux servir voili : (oui voili la reponse)
'Fonctionne dans : ' - document principal, y compris les tableaux, ' - en-têtes et pieds de page, ' - cadres et zones de texte, ' - notes de bas de page et notes de fin.
Dim MyRange As Range, Debut As Long, TypAff As WdViewType, FenAff As WdSeekView
'Si le signet existe If ActiveDocument.Bookmarks.Exists(NomSignet) Then 'Où sommes nous au moment de l'appel ? quel est le type d'affichage ? FenAff = ActiveDocument.ActiveWindow.View.SeekView TypAff = ActiveDocument.ActiveWindow.View.Type 'Sélection du signet ActiveDocument.Bookmarks(NomSignet).Select 'Où sommes-nous maintenant ? If Selection.Information(wdInHeaderFooter) Then 'Il faut revenir en mode page, en-tête ou pied de page ouvert, sinon marche pas ActiveWindow.View.Type = wdPrintView 'On resélectionne ActiveDocument.Bookmarks(NomSignet).Select End If Set MyRange = Selection.Range Debut = MyRange.Start Selection.Bookmarks(NomSignet).Range.Text = TexteSignet MyRange.SetRange Debut, Debut + Len(TexteSignet) Selection.Bookmarks.Add NomSignet, MyRange 'On rétablit la vue initiale ActiveWindow.ActivePane.View.SeekView = FenAff ActiveWindow.View.Type = TypAff End If End Sub
Youpi ja;)
qui remercie les MVP de tout bord
S'lt
voili la reponse que j'ai eu sur la faq word (voir plus bas)
il semblerait que lorsque on est dans le bas de page, la commande atteindre
supprime l'affichage du bas de page et de ce fait le signet ne peut être
atteint. il va falloir que tu poses la question sur le forum word, ils
doivent savoir.
effectivement ils savent ;=)
Pour ma part cela ne marche pas encore nickel chrome car je declare mon
serveur d'application comme un ... (je prefere taire le nom, faut mieux
pour nos oreilles) :=)
Donc je dois ameliorer ma creation de documents
Mais cela marche bien sisi
Il faut penser à rajouter la gestion d'erreur
donc si cela peux servir voili :
(oui voili la reponse)
'Fonctionne dans :
' - document principal, y compris les tableaux,
' - en-têtes et pieds de page,
' - cadres et zones de texte,
' - notes de bas de page et notes de fin.
Dim MyRange As Range, Debut As Long, TypAff As WdViewType, FenAff As
WdSeekView
'Si le signet existe
If ActiveDocument.Bookmarks.Exists(NomSignet) Then
'Où sommes nous au moment de l'appel ? quel est le type d'affichage
?
FenAff = ActiveDocument.ActiveWindow.View.SeekView
TypAff = ActiveDocument.ActiveWindow.View.Type
'Sélection du signet
ActiveDocument.Bookmarks(NomSignet).Select
'Où sommes-nous maintenant ?
If Selection.Information(wdInHeaderFooter) Then
'Il faut revenir en mode page, en-tête ou pied de page ouvert,
sinon marche pas
ActiveWindow.View.Type = wdPrintView
'On resélectionne
ActiveDocument.Bookmarks(NomSignet).Select
End If
Set MyRange = Selection.Range
Debut = MyRange.Start
Selection.Bookmarks(NomSignet).Range.Text = TexteSignet
MyRange.SetRange Debut, Debut + Len(TexteSignet)
Selection.Bookmarks.Add NomSignet, MyRange
'On rétablit la vue initiale
ActiveWindow.ActivePane.View.SeekView = FenAff
ActiveWindow.View.Type = TypAff
End If
End Sub
voili la reponse que j'ai eu sur la faq word (voir plus bas)
il semblerait que lorsque on est dans le bas de page, la commande atteindre supprime l'affichage du bas de page et de ce fait le signet ne peut être atteint. il va falloir que tu poses la question sur le forum word, ils doivent savoir.
effectivement ils savent ;=)
Pour ma part cela ne marche pas encore nickel chrome car je declare mon serveur d'application comme un ... (je prefere taire le nom, faut mieux pour nos oreilles) :=) Donc je dois ameliorer ma creation de documents
Mais cela marche bien sisi
Il faut penser à rajouter la gestion d'erreur
donc si cela peux servir voili : (oui voili la reponse)
'Fonctionne dans : ' - document principal, y compris les tableaux, ' - en-têtes et pieds de page, ' - cadres et zones de texte, ' - notes de bas de page et notes de fin.
Dim MyRange As Range, Debut As Long, TypAff As WdViewType, FenAff As WdSeekView
'Si le signet existe If ActiveDocument.Bookmarks.Exists(NomSignet) Then 'Où sommes nous au moment de l'appel ? quel est le type d'affichage ? FenAff = ActiveDocument.ActiveWindow.View.SeekView TypAff = ActiveDocument.ActiveWindow.View.Type 'Sélection du signet ActiveDocument.Bookmarks(NomSignet).Select 'Où sommes-nous maintenant ? If Selection.Information(wdInHeaderFooter) Then 'Il faut revenir en mode page, en-tête ou pied de page ouvert, sinon marche pas ActiveWindow.View.Type = wdPrintView 'On resélectionne ActiveDocument.Bookmarks(NomSignet).Select End If Set MyRange = Selection.Range Debut = MyRange.Start Selection.Bookmarks(NomSignet).Range.Text = TexteSignet MyRange.SetRange Debut, Debut + Len(TexteSignet) Selection.Bookmarks.Add NomSignet, MyRange 'On rétablit la vue initiale ActiveWindow.ActivePane.View.SeekView = FenAff ActiveWindow.View.Type = TypAff End If End Sub