Bonjour à tous,

S'il y a bien une partie de Windev qui me donne du fil à retordre, c'est l'éditeur d'état.
Il m'est d'ailleurs déjà arrivé de devoir recommencer un état depuis le début car un comportement anormal est venu polluer ce qui fonctionnait très bien avant.

Je viens de "lever" une nouvelle incohérence, non documentée bien entendu.

Le concept : une impression en bloc d'un mailing en recto-verso. Le recto et le verso sont fondamentalement différents. J'ai donc deux états différents que j'enchaine via un iEnchaînementAjoute.
Le 1er état ne fera jamais plus d'une page (il comporte l'adresse du destinataire, l'en-tête de la société, etc.). Je considère (et c'est un choix personnel) que sur cette 1e face, il n'y a pas lieu de faire apparaître la numérotation de la page.
Le 2e état dont l'impression débute au verso peut faire plusieurs pages. Sur cet état je fais apparaître la numérotation des pages, histoire que le destinataire s'y retrouve, notamment si l'impression fait plus d'une feuille.

C'est là que j'entrevois l'intérêt du iRAZNbPages. Je me dis, sympa la fonction : je vais pouvoir redémarrer la numérotation à chaque changement de destinataires.

Hé bien, que nenni. Si c'était si facile ce ne serait pas du Windev !

J'éclaire le processus via le code de reproduction (je fais remonter au ST)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sNomFichier est une chaîne = fRepExe() + "\Test.pdf"
iParamètrePDF("","",iQualitéMaximale)
 
iDestination(iPDFGénérique,sNomFichier)
POUR TOUT Client SUR IDClient
    iEnchaînementAjoute(ETAT_Recto,Client.IDClient)
    iEnchaînementAjoute(ETAT_Verso,Client.IDClient)
FIN
iEnchaînementImprime()
 
sNomFichier = fRepExe() + "\Test2.pdf"
iDestination(iPDFGénérique,sNomFichier)
POUR TOUT Client SUR IDClient
    iEnchaînementAjoute(ETAT_Recto,Client.IDClient)
    iEnchaînementAjoute(ETAT_Verso,Client.IDClient)
    iRAZNbPages()
FIN
iEnchaînementImprime()
Pour un fichier de 10 clients j'ai un mailing de 20 pages (le 2e état dans ce test ne fait jamais plus d'une page).

1/ Dans la 1ere boucle du test (pas d'utilisation de iRAZNbPages() ), chaque page paire voit son pied de page affublé d'un "page xx/20". (où xx correspond parfaitement au numéro de page dans la série)
Comportement normal. Pas de soucis.
2/ Dans la 2e boucle du test (utilisation de iRAZNbPages(), ça part en turbo vrille : chaque verso (sans exception) est numéroté "page 2/3" ?!?

Pour info, je me suis amusé à tester toutes les positions de iRAZNbPages() dans la boucle (début, fin, et entre les deux iEnchaînementAjoute) : aucun résultat cohérent ne ressort.

Afin d'essayer de comprendre comment Windev emmêle la numérotation des pages, j'ai créé un champ de numérotation des pages dans le 1er état.
Et là, miracle (si on peut dire) : Windev arrive à remettre toutes les frites dans le même sachet et chaque numérotation est cohérente...

Donc, si vous devez utiliser un iRAZNbPages() dans le contexte que je viens de décrire, il vous faut créer un champ de numérotation dans tous les états qui sont enchaînés, et le rendre invisible dans le(s) état(s) où vous ne souhaitez que ce soit imprimé...

X.