PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 22 → Comment réaliser un vrai publipostage avec le champ traitement de texte ?
Comment réaliser un vrai publipostage avec le champ traitement de texte ?
Débuté par Pierre-Louis, 18 mai 2017 12:13 - 15 réponses
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 18 mai 2017 - 12:13
Bonjour,

J'essaye de faire du publipostage avec le champ de traitement de texte.
Par exemple, je veux envoyer un courrier à chacun de mes clients.
J'ai donc une lettre modèle, avec des chaînes à remplacer du genre %NomClient%, %Adresse Client%", etc.

Si j'ai un seul client, pas de problème, avec la lettre type et des Docremplace, je génère bien un courrier pour mon client dans un fichier DOCX que je sais sauvegarder.

Si j'ai plusieurs client, je voudrais réaliser un publipostage comme je le faisais avec la classe cWord.
C'est à dire, que je veux obtenir UN SEUL document DOCX comprenant toutes les lettres à mes clients.

Et là, je ne sais pas comment faire pour qu'à partir d'une seule lettre type générer le document de publipostage.

Je pensais faire une boucle du genre

POUR TOUT CLIENT

si premier client alors
// faire les DocRemplace à partir de la page type (avec les %NomClient%, %Adresse Client%", etc.)
sinon
// insérer un saut de page
// insérer une page type (avec les %NomClient%, %Adresse Client%", etc.)
// faire les DocRemplace
fin

Le problème est que je ne sais pas comment insérer un saut de page dans le champ Traitement de texte, ni encore moins insérer une page type.

Est-ce que je fais fausse route ?
Quelqu'un a-t-il réussi à faire du publipostage avec le nouveau champ TT , sans générer 15000 documents pour 15000 clients comme expliqué dans un Webinaire (comment développer un mailing en quelques lignes de code), mais en générant un seul et unique document DOCX ?

Merci.
Posté le 18 mai 2017 - 13:01
Bonjour,
Ce que je tenterai :

docTotal est Document = ""

POUR TOUT Client

docClient est Document = "...\modele.docx"
DocRemplace(docClient,.......)
//...

//Ajout d'un saut de page au document total
DocInsère(docTotal, -1, Caract(12)+RC )
//Ajout du document du client au document total
DocInsère(docTotal, -1, docClient)

FIN

Quelque chose comme ça....!
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 18 mai 2017 - 14:27
Bonjour Victor.
Je vais essayer le quelque chose comme ça... ;)
Merci.
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 18 mai 2017 - 14:55
Re bonjour Victor.

Effectivement, ta solution va dans la bonne direction, j'arrive à obtenir un document avec plusieurs pages contenant plus ou moins les données des clients (y en pas 15000, c'était une boutade ;) ), par contre, pour l'instant toute la mise en page du modèle est détruite dans l'affaire ;(.
A moi de faire la part entre les bugs persos et les bugs du champ TT :o.
Je vous tiens au courant. :)
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 18 mai 2017 - 15:30
Bon, déjà j'ai un modèle avec une image en haut de page.

Le docInsère est incapable de faire un saut de page correct dans ce cas : l'image ne passe à la page suivante comme le reste. :(
Un bug de plus à signaler au ST.
Membre enregistré
1 081 messages
Posté le 18 mai 2017 - 15:33
Bonjour,

Alors là il y a un bout d'exemple lors d'un webinaire. Vois si ça peut t'aider


--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 18 mai 2017 - 15:49
Philippe SB a écrit :
Bonjour,

Alors là il y a un bout d'exemple lors d'un webinaire. Vois si ça peut t'aider


--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique


Merci,

Mais je suppose que le webinaire ( le lien ne fonctionne pas ) est celui dont je parle et génère 100 fichiers pour 100 clients, ce que précisément je ne veux pas.

Merci quand même.
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 18 mai 2017 - 16:01
Re bonjour à tous.

La piste de Victor est la bonne. :merci:

J'ai fait ceci (c'est presque le code donné par Victor)

DocClient est un document
DocModèle est un document="...\modele.docx"
DocTotal est un document
nL est un entier=0

POUR TOUT CLIENT
nL++
DocClient=DocModèle
Docremplace(DocClient, ... %...%...)
//...
si nL=1
DocTotal=DocClient
sinon
DocInsere(DocTotal,-1,Caract(12))
DocInsere(DocTotal,1,DocClient)
fin
FIN

Mais, si j'ai une image dans le modèle, ça ne fonctionne pas ! (bug du champ TT vraisemblablement)
Mais, si modèle comporte un tableau, le DocInsere le supprime (bug du champ TT sûrement)

Bref, il y a de l'espoir si ce champ de traitement de texte veut bien fonctionner un minimum correctement un jour.
Message modifié, 18 mai 2017 - 16:02
Posté le 18 mai 2017 - 17:37
Bonjour

tu es bien en 59u ?

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 5/18/2017 à 8:01 AM, Pierre-Louis a écrit :
Re bonjour à tous.

La piste de Victor est la bonne. :merci:

J'ai fait ceci (c'est presque le code donné par Victor)

DocClient est un document
DocModèle est un document="...\modele.docx"
DocTotal est un document
nL est un entier=0

POUR TOUT CLIENT
nL++
DocClient=DocModèle
Docremplace(DocClient, ... %...%...)
//...
si nL=1
DocTotal=DocClient
sinon
DocInsere(DocTotal,-1,Caract(12))
DocInsere(DocTotal,1,DocClient)
fin
FIN

Mais, si j'ai une image dans le modèle, ça ne fonctionne pas ! (bug du
champ TT vraisemblablement)
Mais, si modèle comporte un tableau, le DocInsere le supprime (bug du
champ TT sûrement)

Bref, il y a de l'espoir si ce champ de traitement de texte veut bien
fonctionner un minimum correctement un jour.
Posté le 19 mai 2017 - 08:53
Le 18/05/2017, Pierre-Louis a supposé :
Bonjour,

J'essaye de faire du publipostage avec le champ de traitement de texte.
Par exemple, je veux envoyer un courrier à chacun de mes clients.
J'ai donc une lettre modèle, avec des chaînes à remplacer du genre
%NomClient%, %Adresse Client%", etc.

Si j'ai un seul client, pas de problème, avec la lettre type et des
Docremplace, je génère bien un courrier pour mon client dans un fichier DOCX
que je sais sauvegarder.

Si j'ai plusieurs client, je voudrais réaliser un publipostage comme je le
faisais avec la classe cWord.
C'est à dire, que je veux obtenir UN SEUL document DOCX comprenant toutes les
lettres à mes clients.

Et là, je ne sais pas comment faire pour qu'à partir d'une seule lettre type
générer le document de publipostage.

Je pensais faire une boucle du genre

POUR TOUT CLIENT

si premier client alors
// faire les DocRemplace à partir de la page type (avec les %NomClient%,
%Adresse Client%", etc.)
sinon
// insérer un saut de page
// insérer une page type (avec les %NomClient%, %Adresse Client%", etc.)
// faire les DocRemplace
fin

Le problème est que je ne sais pas comment insérer un saut de page dans le
champ Traitement de texte, ni encore moins insérer une page type.

Est-ce que je fais fausse route ?
Quelqu'un a-t-il réussi à faire du publipostage avec le nouveau champ TT ,
sans générer 15000 documents pour 15000 clients comme expliqué dans un
Webinaire (comment développer un mailing en quelques lignes de code), mais en
générant un seul et unique document DOCX ?

Merci.


Et pourquoi ne pas utiliser la fonction ienchainementajoute
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 19 mai 2017 - 09:14
Bonjour Fabrice

Où donc peut-on télécharger la 59u ?
Merci.

Edit : Ok j'ai trouvé...
Message modifié, 19 mai 2017 - 09:26
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 19 mai 2017 - 10:01
Bonjour.

Je viens d'essayer la 59 u.

Et les bugs que j'ai trouvé hier :
si j'ai une image dans le modèle, ça ne fonctionne pas ! (bug du champ TT vraisemblablement)
si modèle comporte un tableau, le DocInsere le supprime (bug du champ TT sûrement)

SONT TOUJOURS PRESENTS !

Oui je vois rouge, c'est vraiment lamentable.
Membre enregistré
99 messages
Posté le 19 mai 2017 - 12:55
vous la voyez où la 59u ?
Membre enregistré
189 messages
Popularité : +1 (1 vote)
Posté le 19 mai 2017 - 13:17
Jean.VLD a écrit :
> vous la voyez où la 59u ?

Bonjour.

Moi aussi j'ai eu du mal à la trouver, elle est bien cachée.
Il faut aller sur le lien de la 59m où l'on trouve le lien spécifique vers la 59u pour une maj spécifique au champ traitement de texte. Très logique n'est-ce pas ?
Mais ne vous faites pas trop d'illusion car cette dernière version fonctionne toujours aussi mal que la précédente.
Posté le 01 juillet 2017 - 12:35
Je voudrais ajouter ma pierre à l'édifice, voilà ma première contribution e partant de 2 tables relationnelles, c'est un premier jet, la sauvegarde des documents se fait en pdf, je poursuis....:



Posté le 01 juillet 2017 - 12:36
Je voudrais ajouter ma pierre à l'édifice, voilà ma première contribution e partant de 2 tables relationnelles, c'est un premier jet, la sauvegarde des documents se fait en pdf, je poursuis....: