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

Publipostage en VBA

4 réponses
Avatar
Georges
Bonjour,

dans une précédente question concernant les liens hypertexte dans un
publipostage, Anacoluthe, que je remercie beaucoup, m'a indiqué une solution
qui demande de rafraichir les liens pour leur faire prendre la valeur
attendue. Le problème que je rencontre est que ces liens sont sur des mails
qui sont envoyés par publipostage avec Word et Outlook.

Je cherche donc une macro VB comprenant une boucle à chaque envoi pour y
faire la mise à jour en y intégrant la commande
- ActiveDocument.Fields.Update
et qui neutralise la sécurité d'Outlook car les essais que j'ai effectué
m'ont permis de constater qu'à chaque envoi Outlook va me demander s'il ne
s'agit pas d'une activité malveillante.

Merci de votre aide car je suis sur cette question depuis 2 jours sans
résultat.

Cordialement
Georges

4 réponses

Avatar
Anacoluthe
Bonjour !

'Georges' nous a écrit ...
dans une précédente question concernant les liens hypertexte dans un
publipostage, Anacoluthe, que je remercie beaucoup, m'a indiqué une solution
qui demande de rafraichir les liens pour leur faire prendre la valeur
attendue. Le problème que je rencontre est que ces liens sont sur des mails
qui sont envoyés par publipostage avec Word et Outlook.
Je cherche donc une macro VB comprenant une boucle à chaque envoi pour y
faire la mise à jour en y intégrant la commande
- ActiveDocument.Fields.Update


Tel que vous le présentez ça n'ira pas. ActiveDocument n'est pas le
document de fusion, le produit de la fusion est un message Outlook
qui d'ailleurs est déjà 'parti' à la fusion (sauf si l'envoi est
fait par une macro justement, ce qui produit le message de sécurité).
Il faut s'y prendre autrement, plutôt depuis Outlook.

et qui neutralise la sécurité d'Outlook car les essais que j'ai effectué
m'ont permis de constater qu'à chaque envoi Outlook va me demander s'il ne
s'agit pas d'une activité malveillante.


Utilisez ClickYes qu'on trouve sur la faq à JièL :
http://faq.outlook.free.fr/index.htm?telechargement.htm

Anacoluthe
« Trouver n'est rien, c'est le plan qui est difficile. »
- Fiodor DOSTOÏEVSKI

Avatar
Georges
Bonjour,

merci pour cette solution concernant Outlook, mais comment faire pour mettre
à jour les liens dynamiques des liens hypertexte depuis outlook ?

J'imaginais pourvoir le faire par une macro word auquel cas ClicYes résout
effectivement le probléme . Mais je ne suis pas parvenu à écrire un macro qui
fonctionne avec une boucle pour introduire ma ligne update. Vous me dite
qu'il vaut mieu passer par outlook mais dans le mail je n'ai pas trouvé non
plus de possibilité de mise à jour ?

Excusez moi d'insister. Cordialement

Georges BAUDINAT

Je


Bonjour !

'Georges' nous a écrit ...
dans une précédente question concernant les liens hypertexte dans un
publipostage, Anacoluthe, que je remercie beaucoup, m'a indiqué une solution
qui demande de rafraichir les liens pour leur faire prendre la valeur
attendue. Le problème que je rencontre est que ces liens sont sur des mails
qui sont envoyés par publipostage avec Word et Outlook.
Je cherche donc une macro VB comprenant une boucle à chaque envoi pour y
faire la mise à jour en y intégrant la commande
- ActiveDocument.Fields.Update


Tel que vous le présentez ça n'ira pas. ActiveDocument n'est pas le
document de fusion, le produit de la fusion est un message Outlook
qui d'ailleurs est déjà 'parti' à la fusion (sauf si l'envoi est
fait par une macro justement, ce qui produit le message de sécurité).
Il faut s'y prendre autrement, plutôt depuis Outlook.

et qui neutralise la sécurité d'Outlook car les essais que j'ai effectué
m'ont permis de constater qu'à chaque envoi Outlook va me demander s'il ne
s'agit pas d'une activité malveillante.


Utilisez ClickYes qu'on trouve sur la faq à JièL :
http://faq.outlook.free.fr/index.htm?telechargement.htm

Anacoluthe
« Trouver n'est rien, c'est le plan qui est difficile. »
- Fiodor DOSTOÏEVSKI




Avatar
Anacoluthe
Bonjour !

'Georges' nous a écrit ...
merci pour cette solution concernant Outlook, mais comment faire pour mettre
à jour les liens dynamiques des liens hypertexte depuis outlook ?
J'imaginais pourvoir le faire par une macro word auquel cas ClicYes résout
effectivement le probléme . Mais je ne suis pas parvenu à écrire un macro qui
fonctionne avec une boucle pour introduire ma ligne update. Vous me dite
qu'il vaut mieu passer par outlook mais dans le mail je n'ai pas trouvé non
plus de possibilité de mise à jour ?
Excusez moi d'insister. Cordialement


Votre e-fusion a besoin d'un post-traitement à la fusion.
Dans votre cas il s'agit de mettre à jour des champs Word.
DOnc fusionnez dans Word, mettez les champs Word à jour, puis
demandez à Outlook en automation d'envoyer tout ça. Ceci
suppose qu'OL saura trouver dans chaque section du document
fusionné l'en-tête de chaque message (destinataire, objet).

Pour qui n'est pas très à l'aise en vba de Word et de Outlook
il me semble préférable de chercher un logiciel d'emailing.

Anacoluthe
« Et l'on cherche souvent plus qu'on ne peut trouver. »
- MOLIERE

Avatar
Georges
Bonjour,

merci pour vos indications. En farfouillant sur le Web j'ai trouvé une macro
que j'ai un peu adapté et qui semble fonctionner. Mais il y a dans mon
document des champs protégés (date de la réunion etc...) Ils génèrent chaque
fois une feuille word "Erreur de fusion1" à "Erreur de fusionX" qui plantent
le systéme. Comme ces deviennent document actif, je les ferme. Mais il y a
peut-être une solution qui permettrait désactiver ce message d'erreur. La
fonction On error est sans effet.

Cordialement

Georges

Sub EnvoiEMail()

Dim ImpEmail, Nb, Numero

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord 'On se
place sur le dernier enregistrement du fichier de données
Nb = ActiveDocument.MailMerge.DataSource.ActiveRecord 'Le nombre
d'enregistrements Nb est égal au numéro de l'enregistrement actif, c'est à
dire le dernier
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord 'On se
place sur le premier enregistrement du fichier de données

Numero = ActiveDocument.MailMerge.DataSource.ActiveRecord

ActiveDocument.MailMerge.EditMainDocument
Application.ScreenUpdating = False

Do While Numero <= Nb 'Début de la boucle de construction du document
principal

With ActiveDocument.MailMerge.DataSource
.ActiveRecord = Numero
End With
ActiveDocument.Fields.Update 'Permet la Maj des liens hypertexte
With ActiveDocument.Sections.Last.Range.Fields 'Mise à jour des champs
du document construit avec l'enregistrement en cours de la source de données
.Update
End With
With ActiveDocument.MailMerge 'Fusion des données et envoi de l'e-mail
correspondant à l'enregistrement en cours
.Destination = wdSendToEmail
.MailAsAttachment = False
.MailAddressFieldName = "Adresse_électronique"
.MailSubject = "Message de l'ADSC"
.SuppressBlankLines = False
With .DataSource
.FirstRecord = Numero
.LastRecord = Numero
End With
.Execute pause:úlse
' ActiveWindow.Close SaveChanges:=wdDoNotSaveChanges 'Ferme le
document d'erreur généré par word à cause des champs protégés.
End With
With ActiveDocument.Sections.Last.Range 'Destruction en mémoire de
l'e-mail que nous venons d'envoyer
.Delete
End With
If ActiveDocument.MailMerge.DataSource.ActiveRecord = Nb Then GoTo Sortie
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Numero = ActiveDocument.MailMerge.DataSource.ActiveRecord 'On avance à
l'enregistrement suivant dans la source de données
Loop 'On retourne au début de la boucle pour la construction et l'envoi
d'un nouvel e-mail

Sortie:
'ActiveWindow.Close SaveChanges:=wdDoNotSaveChanges
Application.ScreenUpdating = True
StatusBar = "Opération terminée"

End Sub 'Instruction qui indique la fin de la macro







Bonjour !

'Georges' nous a écrit ...
merci pour cette solution concernant Outlook, mais comment faire pour mettre
à jour les liens dynamiques des liens hypertexte depuis outlook ?
J'imaginais pourvoir le faire par une macro word auquel cas ClicYes résout
effectivement le probléme . Mais je ne suis pas parvenu à écrire un macro qui
fonctionne avec une boucle pour introduire ma ligne update. Vous me dite
qu'il vaut mieu passer par outlook mais dans le mail je n'ai pas trouvé non
plus de possibilité de mise à jour ?
Excusez moi d'insister. Cordialement


Votre e-fusion a besoin d'un post-traitement à la fusion.
Dans votre cas il s'agit de mettre à jour des champs Word.
DOnc fusionnez dans Word, mettez les champs Word à jour, puis
demandez à Outlook en automation d'envoyer tout ça. Ceci
suppose qu'OL saura trouver dans chaque section du document
fusionné l'en-tête de chaque message (destinataire, objet).

Pour qui n'est pas très à l'aise en vba de Word et de Outlook
il me semble préférable de chercher un logiciel d'emailing.

Anacoluthe
« Et l'on cherche souvent plus qu'on ne peut trouver. »
- MOLIERE