montant différent d'un total dans un état imprimé et un état aperçu

Le
Gundt
bonjour à tous,

Sur un état basé sur une requête analyse croisée, le montant du total
général qui figure en fin d'état est différent selon que l'on se trouve
en mode aperçu avant impression ou si l'on imprime l'état.

Si on imprime l'état, le total est bon.
Si on lance l'aperçu avant impression et que l'on fait défiler à l'écran
page par page, le total est bon.
Si on lance l'aperçu avant impression que je me rend directement de la
1ère page à la dernière page (l'état comporte 3 pages), le total général
ne prend en compte les montants des colonnes de la page 2.

Voici le code du pied d'état où se trouve le ctrl indépendant Total
général et du détail print (où se trouve printcount).

Private Sub PiedEtat4_Print(Cancel As Integer, PrintCount As Integer)

Dim intX As Integer
' Place les totaux de colonne dans les zones de texte du pied d'état.
' Débute en colonne 7 (première zone de texte avec la valeur analyse
croisée).
For intX = 7 To intCompteColonnes
Me("Tot" + Format$(intX)) = lngRgTotalColonne(intX)
Next intX

' Place le total général dans la zone de texte du pied d'état.
Me("Tot" + Format$(intCompteColonnes + 1)) = lngTotalEtat
Me("Total_général") = lngTotalEtat

' Masque les zones de texte inutilisées du pied d'état.
For intX = intCompteColonnes + 7 To conColonnesTotales
Me("Tot" + Format$(intX)).Visible = False
Next intX

End Sub

et le code de détail print :
Private Sub Détail1_Print(Cancel As Integer, PrintCount As Integer)

Dim intX As Integer
' Dim lngTotalLigne As Long
' Changement de nature de la variable ngTotalLigne pour éviter les
arrondis de centimes.
Dim lngTotalLigne As Single

' Si PrintCount vaut 1, initialise la variable lngTotalLigne.
' Ajoute aux totaux de colonnes.
If Me.PrintCount = 1 Then
lngTotalLigne = 0

For intX = 7 To intCompteColonnes
' Débute à la colonne 7 (première zone de texte avec une valeur
d'analyse croisée),
' calcule le total pour la ligne en cours de la section Détail.
lngTotalLigne = lngTotalLigne + Me("Col" + Format$(intX))
' Ajoute la valeur d'analyse croisée au total pour la colonne en cours.
lngRgTotalColonne(intX) = lngRgTotalColonne(intX) + Me("Col" +
Format$(intX))
Next intX

' Place le total de ligne dans la zone de texte de la section Détail.
Me("Col" + Format$(intCompteColonnes + 1)) = lngTotalLigne
' Ajoute le total de ligne pour la ligne en cours au total général.
lngTotalEtat = lngTotalEtat + lngTotalLigne
End If

End Sub

J'ai vu que la propriété PrintCount pouvait influencer le
fonctionnement. C'est pourquoi je vous ai mis le code de détail.
Mais il y a aussi du code sur au formatage et sur au reformatage.
Je ne le donnerai que si vous le demandez car le mail est déjà assez long.

Merci d'avance.

Gundt
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #6225031
Bonjour.

Ce problème était déjà répertorié depuis longtemps, mais il ne faut pas le
considérer comme un bug car une pré-visu n'est pas un état final mais
seulement une prévisualisation. Il ne faut jamais imprimer à partir d'une
pré-visu mais toujours à partir d'impression directe pour avoir les bons
résultats.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Gundt" 4613d606$0$14976$
| bonjour à tous,
|
| Sur un état basé sur une requête analyse croisée, le montant du total
| général qui figure en fin d'état est différent selon que l'on se trouve
| en mode aperçu avant impression ou si l'on imprime l'état.
|
| Si on imprime l'état, le total est bon.
| Si on lance l'aperçu avant impression et que l'on fait défiler à l'écran
| page par page, le total est bon.
| Si on lance l'aperçu avant impression que je me rend directement de la
| 1ère page à la dernière page (l'état comporte 3 pages), le total général
| ne prend en compte les montants des colonnes de la page 2.
|
| Voici le code du pied d'état où se trouve le ctrl indépendant Total
| général et du détail print (où se trouve printcount).
|
| Private Sub PiedEtat4_Print(Cancel As Integer, PrintCount As Integer)
|
| Dim intX As Integer
| ' Place les totaux de colonne dans les zones de texte du pied d'état.
| ' Débute en colonne 7 (première zone de texte avec la valeur analyse
| croisée).
| For intX = 7 To intCompteColonnes
| Me("Tot" + Format$(intX)) = lngRgTotalColonne(intX)
| Next intX
|
| ' Place le total général dans la zone de texte du pied d'état.
| Me("Tot" + Format$(intCompteColonnes + 1)) = lngTotalEtat
| Me("Total_général") = lngTotalEtat
|
| ' Masque les zones de texte inutilisées du pied d'état.
| For intX = intCompteColonnes + 7 To conColonnesTotales
| Me("Tot" + Format$(intX)).Visible = False
| Next intX
|
| End Sub
|
| et le code de détail print :
| Private Sub Détail1_Print(Cancel As Integer, PrintCount As Integer)
|
| Dim intX As Integer
| ' Dim lngTotalLigne As Long
| ' Changement de nature de la variable ngTotalLigne pour éviter les
| arrondis de centimes.
| Dim lngTotalLigne As Single
|
| ' Si PrintCount vaut 1, initialise la variable lngTotalLigne.
| ' Ajoute aux totaux de colonnes.
| If Me.PrintCount = 1 Then
| lngTotalLigne = 0
|
| For intX = 7 To intCompteColonnes
| ' Débute à la colonne 7 (première zone de texte avec une valeur
| d'analyse croisée),
| ' calcule le total pour la ligne en cours de la section Détail.
| lngTotalLigne = lngTotalLigne + Me("Col" + Format$(intX))
| ' Ajoute la valeur d'analyse croisée au total pour la colonne en cours.
| lngRgTotalColonne(intX) = lngRgTotalColonne(intX) + Me("Col" +
| Format$(intX))
| Next intX
|
| ' Place le total de ligne dans la zone de texte de la section Détail.
| Me("Col" + Format$(intCompteColonnes + 1)) = lngTotalLigne
| ' Ajoute le total de ligne pour la ligne en cours au total général.
| lngTotalEtat = lngTotalEtat + lngTotalLigne
| End If
|
| End Sub
|
| J'ai vu que la propriété PrintCount pouvait influencer le
| fonctionnement. C'est pourquoi je vous ai mis le code de détail.
| Mais il y a aussi du code sur au formatage et sur au reformatage.
| Je ne le donnerai que si vous le demandez car le mail est déjà assez long.
|
| Merci d'avance.
|
| Gundt
Gundt
Le #6224801
Bonsoir,

Bonjour.

Ce problème était déjà répertorié depuis longtemps, mais il ne faut pas le
considérer comme un bug car une pré-visu n'est pas un état final mais
seulement une prévisualisation. Il ne faut jamais imprimer à partir d'une
pré-visu mais toujours à partir d'impression directe pour avoir les bons
résultats.
Ah, j'aime mieux ça : j'ai passé ma journée d'hier à chercher d'où

pouvait provenir le problème.
Il me reste à supprimer les aperçus avant impression et les remplacer
par des impressions.
Dommage pour le gaspillage de papier ou alors à mois d'arriver à masquer
dans un état le montant total en aperçu et le rendre visible si on imprime.
C'est faisable de masquer en aperçu et de rendre visible un ctrl quand
on lance une impression ?

Merci à Raymond pour le tuyau.

Gundt

Raymond [mvp]
Le #6224791
dans chaque section d'un état tu as les deux événements : au formatage et
sur impression.
dans ces deux événements tu places des propriétés visibles ou non pour tes
contrôles.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Gundt" 46153d73$0$14535$
| Bonsoir,
|
| > Bonjour.
| >
| > Ce problème était déjà répertorié depuis longtemps, mais il ne faut pas
le
| > considérer comme un bug car une pré-visu n'est pas un état final mais
| > seulement une prévisualisation. Il ne faut jamais imprimer à partir
d'une
| > pré-visu mais toujours à partir d'impression directe pour avoir les bons
| > résultats.
| Ah, j'aime mieux ça : j'ai passé ma journée d'hier à chercher d'où
| pouvait provenir le problème.
| Il me reste à supprimer les aperçus avant impression et les remplacer
| par des impressions.
| Dommage pour le gaspillage de papier ou alors à mois d'arriver à masquer
| dans un état le montant total en aperçu et le rendre visible si on
imprime.
| C'est faisable de masquer en aperçu et de rendre visible un ctrl quand
| on lance une impression ?
|
| Merci à Raymond pour le tuyau.
|
| Gundt
|
|
|
Tisane
Le #6224771
Bonjour Gundt,

Bonjour.

Ce problème était déjà répertorié depuis longtemps, mais il ne faut pas
le considérer comme un bug car une pré-visu n'est pas un état final mais
seulement une prévisualisation. Il ne faut jamais imprimer à partir d'une
pré-visu mais toujours à partir d'impression directe pour avoir les bons
résultats.
Ah, j'aime mieux ça : j'ai passé ma journée d'hier à chercher d'où pouvait

provenir le problème.
Il me reste à supprimer les aperçus avant impression et les remplacer par
des impressions.
Dommage pour le gaspillage de papier [...]


Cette dernière phrase me fait réagir ;-)

Tu dois sans doute utiliser Access 97. Cette "anomalie" ne se produit plus
depuis.
Une peu de lecture dans la fiche suivante et quelques moyens de
contournement pour ne pas gaspiller de papier, notamment les méthodes 4 ou
5.
"ACC97: Incorrect Totals Occur When You Print or Preview a Report"
http://support.microsoft.com/kb/326453/en
Si nécessaire, remplace en par fr à la fin de l'adresse pour une traduction
automatique (approximative).

Pour la méthode 5, place les lignes de commande sur le bouton qui ouvre
l'état :
Private Sub Ton_Bouton_Click()
DoCmd.OpenReport "Ton_Etat", acViewPreview
DoCmd.RunCommand acCmdPreviewFourPages
End Sub

Dans cet exemple, on demande l'affichage de 4 pages (donc 3 dans ton cas).
Tu peux choisir 2, 4, 8 ou 12 pages simultanément.
Rien n'empêche les utilisateurs de zoomer en cliquant simplement sur la page
voulue.
Je n'ai pas testé car j'ai la flemme de sortir mon portable Office 97 et
surtout de recréer un état "à problème", mais nous comptons sur toi pour le
retour ;-)

--
Tisane


Gundt
Le #6224581
[...]

Tu dois sans doute utiliser Access 97. Cette "anomalie" ne se produit
plus depuis.
Oui, c'est exact. On a que 2 applis dont 1 en runtime.

On a bien Access 2000 mais je n'avais pas (et je n'ai pas) réussi à
l'époque à installer et à le faire fonctionner le kit de développement
pour Access 2000. Et je ne connaissais pas ce forum à ce moment là qui
depuis que je l'ai découvert m'a bien dépanné.
J'en profite pour remercier les contributeurs.

Une peu de lecture dans la fiche suivante et quelques moyens de
contournement pour ne pas gaspiller de papier, notamment les méthodes 4
ou 5.
"ACC97: Incorrect Totals Occur When You Print or Preview a Report"
http://support.microsoft.com/kb/326453/en
Si nécessaire, remplace en par fr à la fin de l'adresse pour une
traduction automatique (approximative).

Pour la méthode 5, place les lignes de commande sur le bouton qui ouvre
l'état :
Private Sub Ton_Bouton_Click()
DoCmd.OpenReport "Ton_Etat", acViewPreview
DoCmd.RunCommand acCmdPreviewFourPages
End Sub

Dans cet exemple, on demande l'affichage de 4 pages (donc 3 dans ton
cas). Tu peux choisir 2, 4, 8 ou 12 pages simultanément.
Rien n'empêche les utilisateurs de zoomer en cliquant simplement sur la
page voulue.
Oui, je viens de regarder. Effectivement, c'est un moyen de contourner

le problème. Je viens de l'essayer. Cela marche. Et c'est mieux que de
cacher le total en mode aperçu.
Et cela évitera les gaspillages d'impression. :-)

Je n'ai pas testé car j'ai la flemme de sortir mon portable Office 97 et
surtout de recréer un état "à problème", mais nous comptons sur toi pour
le retour ;-)
Oui, bien sûr, c'est fait.


Un grand merci à Raymond et à Tisane.

Gundt

Publicité
Poster une réponse
Anonyme