OVH Cloud OVH Cloud

[vba ] une âme charitable svp

8 réponses
Avatar
tf
Bonjour,


J'ai un et un seul gros document que j'ai segmenté en autant de pages
(ou emails) que de clients cités dans ce document.


En utilisant l'enregistrement de la macro, j'ai pu récupérer le code
vba correspondant, ci-dessous.

Cela fait presque tout ce que je veux :
- sauf : indiquer du texte libre dans le corps de message pour
chaque mail envoyé
--------------------------------------------------------------------------
For Each afield In ActiveDocument.MailMerge.DataSource.DataFields
Selection.WholeStory
With ActiveDocument.MailMerge
.Destination = wdSendToEmail
.SuppressBlankLines = True
.MailSubject = "My subject is _____"
////////////////////////////////////////////////////////////////////////////
//////////////////////
// ici, j'aimerais bien insérer qch comme .Body="mon texte libre"
////////////////////////////////////////////////////////////////////////////
////////////////////////

With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord


End With
.Execute Pause:=False
End With

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next afield
------------

Si vous aviez une astuce, cela m'aiderait beaucoup....


Merci pour toute info.

8 réponses

Avatar
Pascal Engelmajer
salut,
Pas très clair. Je vais essayer de répondre.
Ce "texte libre" est différent pour chaque message ?
dans ce cas il faut ajouter ce texte dans un champ de la base ou un ajouter
un champ remplir?
dans ce dermier cas le champs remplir peut être valide pour tous les
messages.
Une autre solution :
écrire une macro qui utilise le modèle, le fichier de données, et un objet
outlook... (amusant mais pas facile si débutant)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
Avatar
Geo
Bonsoir tf,

Cela fait presque tout ce que je veux :
- sauf : indiquer du texte libre dans le corps de message pour
chaque mail envoyé


.body = InputBox("Texte à insérer dans le courrier", "Saisie d'un
texte libre")

ça irait ?
--

A+

Avatar
Pascal Engelmajer
Salut,
l'objet ActiveDocument.MailMerge n'a pas la propriété Body ...
cela ne peut pas fonctionner...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Geo" a écrit dans le message de news:
#
Bonsoir tf,

Cela fait presque tout ce que je veux :
- sauf : indiquer du texte libre dans le corps de message pour
chaque mail envoyé


.body = InputBox("Texte à insérer dans le courrier", "Saisie d'un
texte libre")

ça irait ?
--

A+




Avatar
Geo
Bonsoir Pascal ,


Salut,
l'objet ActiveDocument.MailMerge n'a pas la propriété Body ...
cela ne peut pas fonctionner...


J'ai suivi son raisonnement, sans vérifier.
merci pour la rectification.

--

A+

Avatar
Pascal Engelmajer
Salut,
de toute façon l'auteur de la question s'est mis aux abonnés absents...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Geo" a écrit dans le message de news:
#
Bonsoir Pascal ,


Salut,
l'objet ActiveDocument.MailMerge n'a pas la propriété Body ...
cela ne peut pas fonctionner...


J'ai suivi son raisonnement, sans vérifier.
merci pour la rectification.

--

A+




Avatar
tf
Bonjour

Merci à tous pour les réponses.

Donc Mailmerge n'a pas la propriété Body ... :(


Est-ce que je peux utilser l'objet outlook en même temps ?
Cela ne provoquera pas de conflit ?
Comment l'insérer dans le code ci-dessous ?

---------------
For Each afield In ActiveDocument.MailMerge.DataSource.DataFields
Selection.WholeStory
With ActiveDocument.MailMerge
.Destination = wdSendToEmail
.SuppressBlankLines = True
.MailSubject = "My subject is _____"
////////////////////////////////////////////////////////////////////////////
//////////////////////
// Insertion ici du .Body de l'objet Outlook ??

////////////////////////////////////////////////////////////////////////////
////////////////////////

With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord


End With
.Execute Pause:úlse
End With

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next afield
------------

Merci
T.


"Pascal Engelmajer" a écrit dans le
message news:
Salut,
de toute façon l'auteur de la question s'est mis aux abonnés absents...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Geo" a écrit dans le message de news:
#
Bonsoir Pascal ,


Salut,
l'objet ActiveDocument.MailMerge n'a pas la propriété Body ...
cela ne peut pas fonctionner...


J'ai suivi son raisonnement, sans vérifier.
merci pour la rectification.

--

A+








Avatar
tf
J'ai besoin d'envoyer le même message à toutes les personnes .


------------------

Autre chose :est-ce que vous savez comment envoyer 2 et plus pièces jointes
à chaque personne par un seul email
(toujours par rapport au code inséré dans mes post précédents).


Merci encore
T.





"tf" a écrit dans le message news:
3fe69072$0$6974$

Bonjour

Merci à tous pour les réponses.

Donc Mailmerge n'a pas la propriété Body ... :(


Est-ce que je peux utilser l'objet outlook en même temps ?
Cela ne provoquera pas de conflit ?
Comment l'insérer dans le code ci-dessous ?

---------------
For Each afield In ActiveDocument.MailMerge.DataSource.DataFields
Selection.WholeStory
With ActiveDocument.MailMerge
.Destination = wdSendToEmail
.SuppressBlankLines = True
.MailSubject = "My subject is _____"

////////////////////////////////////////////////////////////////////////////

//////////////////////
// Insertion ici du .Body de l'objet Outlook ??


////////////////////////////////////////////////////////////////////////////

////////////////////////

With .DataSource
.FirstRecord ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord


End With
.Execute Pause:úlse
End With

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next afield
------------

Merci
T.


"Pascal Engelmajer" a écrit dans le
message news:
Salut,
de toute façon l'auteur de la question s'est mis aux abonnés absents...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Geo" a écrit dans le message de news:
#
Bonsoir Pascal ,


Salut,
l'objet ActiveDocument.MailMerge n'a pas la propriété Body ...
cela ne peut pas fonctionner...


J'ai suivi son raisonnement, sans vérifier.
merci pour la rectification.

--

A+












Avatar
geo
Bonjour
-----Message d'origine-----

J'ai besoin d'envoyer le même message à toutes les
personnes .


Je n'y connais rien en fusions, mais pourquoi ne pas
mettre le texte fixe dans ton document type ?

A+