Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2007, 11h58   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 40
Points : 8
Points : 8
Par défaut [VBA-W] Enregistrer documents publipostage

Bonjour,

Je commence à attaquer le publipostage depuis une application Access. Etant donné que j'ai dû faire 2 ou 3 fois du publipostage dans ma vie, veuillez m'excuser si la question parait bête !

Bon voilà, je souhaite lancer un publipostage via Access d'un document Word (jusque là, pas de problèmes, j'ai trouvé ce que je voulais), mais le soucis c'est que je souhaite enregistrer les documents fusionnés (j'utilise donc la fusion dans des nouveaux documents). Ma question est : comment dois-je faire pour enregistrer automatiquement ces documents ?? (avec un nom de document variable selon le destinataire).

Si j'utilise ce principe, c'est parce que je veux les ajouter en pièce jointe pour les envoyer via lotus Notes.

Merci d'avance pour votre compréhension et votre aide !
MrWeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 20h56   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
A quels niveaux se situent tes problèmes ?
Ensuite, si tu utilises sans index de ligne dans la base, pour le publipostage, tu obtiens une lettre type rassemblant les courriers de tous les clients...
Donc tu as un pb pour enregistrer courrier par courrier.
Là, tu as la solution consistant à lancer les fusions une par une.
Si tu ne veux pas faire ça et que tu souhaites copier chaque page sur un nouveau document, tu peux aller en début de la page suivante ainsi
Code :
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="1"
puis sélectionner toute la page
Code :
1
2
3
4
5
    With Selection
        .ExtendMode = True
        .GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
    End With
    Selection.copy destination:=NomDuNouveauDocument
La récupération du nom du client :
Je suppose qu'il se trouve toujours au même emplacement dans la feuille
Le déplacement :
Code :
1
2
3
4
5
    Selection.HomeKey Unit:=wdStory 'envoie en début de document
    Selection.MoveDown Unit:=wdLine, Count:=10 ' pour te placer sur la ligne du nom - ici 10 lignes
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend 'inclut le saut de ligne
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend ' Retire le saut de ligne
    NomClient = Sélection 'là, tu auras "Monsieur/madame + prénom + Nom
Juste des idées
Tu précises ce que tu veux
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 12h06   #3
Invité régulier
 
Inscription : décembre 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 40
Points : 8
Points : 8
J'essayerai tout ça la semaine prochaine !
Je vous tient au courant !
MrWeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 08h25   #4
Invité régulier
 
Inscription : décembre 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 40
Points : 8
Points : 8
Et bien en fait j'ai un document type (comme tout document de publipostage), et je souhaiterai lancer le publipostage par le mode "fusionner vers un nouveau document".

Ainsi, je récupère un tas de documents Word, que je souhaite enregistrer sur un serveur en le nommant selon le nom du client. (par exemple, si mon client est M.Dupont Georges, je souhaiterai le nommer georgesdupont.Doc)

Mais mon problème est que je n'ai aucune notion de VBA pour Word, je ne sais donc pas comment traiter tout celà. Je pense que la méthode serait de lancer la fusion client par client afin de pouvoir récupérer les différents noms plus facilement.

Est ce que j'ai été clair ?
MrWeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 15h11   #5
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 35
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2003
Messages : 35
Points : 32
Points : 32
C'est exactement ce que je cherche à faire en ce moment...
Par exemple, j'ai un courrier à faire pour X clients, et je veux X docs Word et non pas 1 doc Word avec X clients dedans.

Je pense que cette option n'existe pas dans Word (comme OOWriter d'ailleurs).

Je vais certainement prendre le code ci-dessus et l'adapter.
buchette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 16h54   #6
Invité régulier
 
Inscription : décembre 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 40
Points : 8
Points : 8
Comment faire ?
MrWeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 17h48   #7
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 35
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2003
Messages : 35
Points : 32
Points : 32
Citation:
Envoyé par buchette
Je vais certainement prendre le code ci-dessus et l'adapter.
Citation:
Envoyé par MrWeb
Comment faire ?
???

VBA, autrement je vois pas. Dès que j'ai trouvé je te fais suivre la soluce.
buchette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 20h46   #8
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 858
Points : 16 858
Envoyer un message via Skype™ à bbil
je vous ait préparé un morceau de code à adapter ...:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
Sub MonPubli()
 Dim myDoc As Document
 
 Dim iPrec As Integer
 Set myDoc = ActiveDocument ' A Adapter au bon document
 
 With myDoc.MailMerge
    .DataSource.ActiveRecord = wdFirstRecord
    While iPrec < .DataSource.ActiveRecord
        .DataSource.FirstRecord = .DataSource.ActiveRecord
        .DataSource.LastRecord = .DataSource.ActiveRecord
        .Destination = wdSendToNewDocument
        .Execute
        ActiveDocument.SaveAs "c:\tmp\" & .DataSource.DataFields(2) 'Utilise le champ 2 comme nom de fichier
        ActiveDocument.Close False
        iPrec = .DataSource.ActiveRecord 'Memorise le numéro d'enregistrement pour détecter fin des donneés
        .DataSource.ActiveRecord = wdNextRecord 'passe à l'enregistrement suivant
    Wend
 End With
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 08h56   #9
Invité régulier
 
Inscription : décembre 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 40
Points : 8
Points : 8
Merci pour ce bout de code !

Maintenant, je n'arrive pas à lancer la macro depuis Access : ma requete "source" n'a pas pu etre lancée étant donné que mon appli access est ouverte.... du moins, c'est ce que je pense
Aurais-je oublié quelquechose ? Y aurait-il moyen de lancer cette requete en mode "lecture" uniquement ?
MrWeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 09h00   #10
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 858
Points : 16 858
Envoyer un message via Skype™ à bbil
il se passe quoi lorsque tu lance la requête depuis-access.. et comment l'execute-tu...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 09h14   #11
Invité régulier
 
Inscription : décembre 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 40
Points : 8
Points : 8
et bien en fait quand j'ouvre le document word Manuellement, et que ma base access est fermée, il me demande si je veux éxécuter la requete SQL suivante. Bêtement, je clique sur oui, et j'ai tous les enregistrements de mon publipostage.

Maintenant, quand je créer une fonction sur Access qui m'ouvre le fichier Word qui sert de modèle au publipostage, il ne me demande pas d'entrée si je veux exécuter la requête. Du coup, il m'ouvre le document Word sans source de données...

Bizarre....
MrWeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 09h16   #12
Invité régulier
 
Inscription : décembre 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 40
Points : 8
Points : 8
En effet, bizarre.
J'ai recréé une macro pour laquelle je remet une source de données, et là ça marche.

Merci !
MrWeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h03   #13
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 35
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2003
Messages : 35
Points : 32
Points : 32
Super code bbil

ça marche très bien, merci.
buchette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h04.


 
 
 
 
Partenaires

Hébergement Web