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

Saut de page conditionnel

19 réponses
Avatar
Florent
Bonjour à tous

Dans un état (dans quel état j'erre !),
je souhaiterais toujours terminer sur un nombre pair de pages,
donc si le nombre de pages est impair,
je voudrais ajouter un saut de page après la dernière section.
J'ai tenté le code suivant, ça ne marche pas !!!

Private Sub EntêteGroupe2_Print(Cancel As Integer, PrintCount As Integer)
If (Me.Pages / 2) <> Round(Me.Pages / 2) Then
Beep
EntêteGroupe2.ForceNewPage = 2
End If
End Sub

Je pense que pour vérifier si le nombre de pages est impair
il doit y avoir plus simple que :
If (Me.Pages / 2) <> Round(Me.Pages / 2) Then
mais ça marche.

Toutes vos suggestions seront les bienvenues
Merci par avance

Paul

10 réponses

1 2
Avatar
3stone
Salut,

"Florent"
| Dans un état (dans quel état j'erre !),
| je souhaiterais toujours terminer sur un nombre pair de pages,
| donc si le nombre de pages est impair,
| je voudrais ajouter un saut de page après la dernière section.
| J'ai tenté le code suivant, ça ne marche pas !!!
|
| Private Sub EntêteGroupe2_Print(Cancel As Integer, PrintCount As Integer)
| If (Me.Pages / 2) <> Round(Me.Pages / 2) Then
| Beep
| EntêteGroupe2.ForceNewPage = 2
| End If
| End Sub
|
| Je pense que pour vérifier si le nombre de pages est impair
| il doit y avoir plus simple que :
| If (Me.Pages / 2) <> Round(Me.Pages / 2) Then
| mais ça marche.


Utilise modulo...

if ([pages] mod 2) = 0 then

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Florent
Pierre,
Merci pour mod 2, ça marche très bien,
par contre ce qui ne marche pas, c'est le reste,
c'est à dire de pacer un saut de page aprés En-tête de groupe2
par : EntêteGroupe2.ForceNewPage = 2

Merci par avance
A+
Paul
Avatar
Florent
Help me !!!
A+
Paul
Avatar
Willi2004
Salut Florent.
J'ai du mal à te suivre, alors soit plus concret.
Tu as par exemple un état qui fait 5 pages, numérotées de 1 à 5.
Mais comme tu ne veux pas finir par une page impair, tu voudrais en rajouter
à la fin une vierge et portant le numéro 6. c'est cela?

Sinon, essaye d'être plus clair.


"Florent" a écrit dans le message de news:

| Help me !!!
| A+
| Paul
Avatar
Florent
Willi,
C'est exactement ce que tu décris.
Je souhaite terminer l'état par une page impair
quel que soit le nombre de pages de l'état.
Je souhaiterais pouvoir modifier la propriété d'une section de l'état
en mettant par programation un saut de page après
mais je n'ai pas réussi !
Merci par avance pur ton aide
Avatar
3stone
Salut,

"Florent"
| Je souhaite terminer l'état par une page impair


Tu avais dit "pair" !


| quel que soit le nombre de pages de l'état.
| Je souhaiterais pouvoir modifier la propriété d'une section de l'état
| en mettant par programation un saut de page après
| mais je n'ai pas réussi !


Sur impression de la section détail :


Pour terminer pair...

If (Me.Page = Me.Pages) And (Me.Pages Mod 2 = 1) Then
Me.Section(0).ForceNewPage = 2
End If


Pour terminer impair...

If (Me.Page = Me.Pages) And (Me.Pages Mod 2 = 0) Then
Me.Section(0).ForceNewPage = 2
End If

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Willi2004
Bonjour 3stone.
C'est comme si Access avait des difficultés à exécuter le "ForceNewPage "
pour ce cas-ci.
J'avais moi-même déjà essayé par macro et aussi par vb (dans différentes
sections de l'état) en m'appuyant sur la méthode suggérée dans l'aide pour
forcer à un saut de page mais tout ça ne marche pas ici.

Est-ce qur tu confirmes, Florent?

J'imagine que tu ouvres ton état depuis un formulaire à l'aide d"un bouton
de
commande?
Dans ce cas je crois avoir trouvé une solution, mais dans ce cas tu devras
trier ton entête de groupe par ordre décroissant. Si cela ne te pose pas
problème, OK pour la solution.

Elle consiste à ajouter un bout de code à celui de ton bouton de commande
pour qu'un enregistrement soit ajouté à la table source avant l'ouverture de
l'état, si le nombre d'enregistrement de la table est impair.
Ainsi à l'ouverture, l'état aura un nombre pair de pages, la dernière ne
comportant que l'entête de groupe avec le champ de regroupement vide.

D'où la nécessité de trier l'entête de groupe par ordre décroissant car
sinon, la page rajoutée se trouverait en première position de fait du vide
au niveau du champ de regroupement.


"3stone" a écrit dans le message de news:
%23%
| Salut,
|
| "Florent"
|| Je souhaite terminer l'état par une page impair
|
|
| Tu avais dit "pair" !
|
|
|| quel que soit le nombre de pages de l'état.
|| Je souhaiterais pouvoir modifier la propriété d'une section de l'état
|| en mettant par programation un saut de page après
|| mais je n'ai pas réussi !
|
|
| Sur impression de la section détail :
|
|
| Pour terminer pair...
|
| If (Me.Page = Me.Pages) And (Me.Pages Mod 2 = 1) Then
| Me.Section(0).ForceNewPage = 2
| End If
|
|
| Pour terminer impair...
|
| If (Me.Page = Me.Pages) And (Me.Pages Mod 2 = 0) Then
| Me.Section(0).ForceNewPage = 2
| End If
|
| --
| A+
| Pierre (3stone) Access MVP
| Perso: http://www.3stone.be/
| MPFA: http://www.mpfa.info/ (infos générales)
|
Avatar
3stone
Salut,

"Willi2004"
| C'est comme si Access avait des difficultés à exécuter le "ForceNewPage "
| pour ce cas-ci.
| J'avais moi-même déjà essayé par macro et aussi par vb (dans différentes
| sections de l'état) en m'appuyant sur la méthode suggérée dans l'aide pour
| forcer à un saut de page mais tout ça ne marche pas ici.


Le code que j'ai donné fonctionne parfaitement !

Il faut juste l'appliqué comme indiqué ;-)



| J'imagine que tu ouvres ton état depuis un formulaire à l'aide d"un bouton
| de
| commande?
| Dans ce cas je crois avoir trouvé une solution, mais dans ce cas tu devras
| trier ton entête de groupe par ordre décroissant. Si cela ne te pose pas
| problème, OK pour la solution.
|
| Elle consiste à ajouter un bout de code à celui de ton bouton de commande
| pour qu'un enregistrement soit ajouté à la table source avant l'ouverture de
| l'état, si le nombre d'enregistrement de la table est impair.
| Ainsi à l'ouverture, l'état aura un nombre pair de pages, la dernière ne
| comportant que l'entête de groupe avec le champ de regroupement vide.
|
| D'où la nécessité de trier l'entête de groupe par ordre décroissant car
| sinon, la page rajoutée se trouverait en première position de fait du vide
| au niveau du champ de regroupement.


Je ne vois pas ce que tu tentes d'expliquer avec cette gymnastique...
Et on se moque royalement que quoi que ce soit, soit trié ou non et heureusement.
Quant à ajouter un(des) enregistrement(s)...

Il s'agit bien, si j'ai compris la demande, de sortir un état avec un nombre
de pages paires (ou impaires si on le souhaite).
Le "ForceNewPage" n'est pas applicable après un pied de page.
Il ne "resterait" rien à imprimer... après !
Il s'applique donc avant ou après la section détail, ce qui repousse le
pied d'état ET le dernier pied de page... sur la page suivante ;-)

Ce qui est donné dans l'aide (d'après mes souvenirs) est la manière de LIRE
si oui ou non une nouvelle page (un ForceNewPage) à été exécuté. Nuance !

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Willi2004
Salut 3stone.
J'ai essayé de mettre en oeuvre ce que tu as expliqué dans l'exemple
élémentaire suivant: http://cjoint.com/?ipvxXMkEec
L'état comporte 5 pages et j'ai associé ton code à l'événement "Sur
impression" de la section Détail.
Malgré cela, à l'impression comme en aperçu avant impression, on a toujours
5 pages et non 6 comme le souhaite Florent.

L'exemple suivant quant à lui, illustre l'astuce que j'ai difficilement
tenté d'expliquer à Florent:
http://cjoint.com/?ipvyR5Zn6L
Et comme je l'ai déjà indiqué, on est dans ce cas tenu de trier l'entête de
groupe suivant l'ordre décroissant.
La raison? Car sinon, la page rajoutée se mettrait en première position à
l'ouverture de l'état et serait donc numérotée 1.
Or, il faut qu'elle termine l'état et soit numérotée 6.

Mais ce que tu proposes serait beaucoup plus interressant si ça pouvait
marcher. J'ai certainement mal appliqué tes explications.



"3stone" a écrit dans le message de news:
%
| Salut,
|
| "Willi2004"
|| C'est comme si Access avait des difficultés à exécuter le "ForceNewPage "
|| pour ce cas-ci.
|| J'avais moi-même déjà essayé par macro et aussi par vb (dans différentes
|| sections de l'état) en m'appuyant sur la méthode suggérée dans l'aide
pour
|| forcer à un saut de page mais tout ça ne marche pas ici.
|
|
| Le code que j'ai donné fonctionne parfaitement !
|
| Il faut juste l'appliqué comme indiqué ;-)
|
|
|
|| J'imagine que tu ouvres ton état depuis un formulaire à l'aide d"un
bouton
|| de
|| commande?
|| Dans ce cas je crois avoir trouvé une solution, mais dans ce cas tu
devras
|| trier ton entête de groupe par ordre décroissant. Si cela ne te pose pas
|| problème, OK pour la solution.
||
|| Elle consiste à ajouter un bout de code à celui de ton bouton de commande
|| pour qu'un enregistrement soit ajouté à la table source avant l'ouverture
de
|| l'état, si le nombre d'enregistrement de la table est impair.
|| Ainsi à l'ouverture, l'état aura un nombre pair de pages, la dernière ne
|| comportant que l'entête de groupe avec le champ de regroupement vide.
||
|| D'où la nécessité de trier l'entête de groupe par ordre décroissant car
|| sinon, la page rajoutée se trouverait en première position de fait du
vide
|| au niveau du champ de regroupement.
|
|
| Je ne vois pas ce que tu tentes d'expliquer avec cette gymnastique...
| Et on se moque royalement que quoi que ce soit, soit trié ou non et
heureusement.
| Quant à ajouter un(des) enregistrement(s)...
|
| Il s'agit bien, si j'ai compris la demande, de sortir un état avec un
nombre
| de pages paires (ou impaires si on le souhaite).
| Le "ForceNewPage" n'est pas applicable après un pied de page.
| Il ne "resterait" rien à imprimer... après !
| Il s'applique donc avant ou après la section détail, ce qui repousse le
| pied d'état ET le dernier pied de page... sur la page suivante ;-)
|
| Ce qui est donné dans l'aide (d'après mes souvenirs) est la manière de
LIRE
| si oui ou non une nouvelle page (un ForceNewPage) à été exécuté. Nuance !
|
| --
| A+
| Pierre (3stone) Access MVP
| Perso: http://www.3stone.be/
| MPFA: http://www.mpfa.info/ (infos générales)
|
Avatar
Florent
Merci à tous deux de votre implication dans mon modeste problème.

J'ai aussi tenté "ForceNewPage", mais sans succès.
Si 3stone dit que ça devrait marcher,
c'est qu'il y a une subtilité que je n'ai pas compris.
3stone, pourrais tu regarder l'exemple Bd3 de Willi
qui est bien la representation du problème avec utilisation de
"ForceNewPage",
et nous dire ce qui cloche.
Merci
Paul
1 2