FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- Comment imprimer un état avec une couleur différente pour les lignes paires/impaires ?
- Comment imprimer, visualiser, modifier un état réalisé sous Access depuis VB ?
- Pourquoi Access 2000 n'imprime-t-il pas les chiffres sous Windows 2000 ?
- Comment imprimer un état sur une imprimante précise, et non celle par défaut ?
- Comment imprimer un état en plusieurs exemplaires ?
- Comment faire pour qu'un nom de groupe dans un état s'écrive aussi sur la/les page(s) suivante(s) ?
- Comment empêcher l'impression d'une page blanche numérotée avant que mon travail ne sorte ?
- Comment imprimer un nombre voulu d'enregistrements dans un état ?
- Comment créer/consulter un état sans avoir d'imprimante ?
- Comment éviter les pages blanches lorsque l'on imprime un état ?
- Comment imprimer un état page par page ?
- Comment éviter qu'Access imprime l'en-tête de groupe en bas de page ?
- Voir Comment insérer un numéro de ligne dans un état (voir lien en bas) pour ajouter un contrôle [NoLigne].
- Vous pouvez le masquer si vous ne l'utilisez pas (onglet Format, Visible = Non).
- Dans l'événement Sur impression de la section Détail (=Section(0)), copier :
Private
Sub
Détail_Print
(
Cancel As
Integer
, PrintCount As
Integer
)
' Utiliser Détail_Print, PAS Détail_Format qui est appelé PLUSIEURS fois
If
(
[NoLigne] Mod
2
) =
0
Then
Section
(
0
).BackColor
=
vbWhite
Else
Section
(
0
).BackColor
=
13434879
' Jaune pâle : joli et discret
End
If
End
Sub
Bien entendu, vous pouvez remplacer le "Mod 2" par "Mod 3" pour changer de couleur une ligne sur trois seulement.
Pour trouver d'autres couleurs, voir Comment déterminer un code couleur quelconque dans Access (lien ci-dessous).
Lien : Comment insérer un numéro de ligne dans un état ?
Lien : Comment déterminer un code couleur quelconque dans Access ?
Ce code permet d'utiliser les états existants sous Access. Cochez les références à Access dans le projet Visual Basic et copiez le code approprié.
Ouverture de la base de données Access :
Dim
MaDbMat As
String
Dim
MesEtats As
Access.Application
MaDbMat =
CurrentProject.Path
&
"\MaBase.mdb"
Set
MesEtats =
New
Access.Application
MesEtats.OpenCurrentDatabase
MaDbMat, False
Pour imprimer un état sans le visualiser :
MesEtats.DoCmd.OpenReport
"NomdeMonEtat"
, acViewNormal
Pour prévisualiser un état en mode plein écran :
MesEtats.Visible
=
True
MesEtats.DoCmd.OpenReport
"NomdeMonEtat"
, acViewPreview
MesEtats.DoCmd.Maximize
Pour le mode Design en plein écran :
MesEtats.Visible
=
True
Mesetats.DoCmd.OpenReport
"NomdeMonEtat"
, acViewDesign
MesEtats.DoCmd.Maximize
Lien : FAQ VB
Allez en mode création de votre état et faites Fichier/Mise en Page. Ensuite, dans l'onglet Page cliquez sur Utiliser une imprimante spécifique. Enfin, cliquez sur le bouton Imprimantes pour choisir celle que vous voulez utiliser, et validez votre choix.
Dans un module, écrire la fonction suivante :
Public
sub
fgImprimeCopiesEtat
(
stEtat As
String
, itCopies As
Integer
)
' stEtat : nom de l'état
' itCopies : nombre de copies
DoCmd.OpenReport
stEtat, acViewPreview
DoCmd.PrintOut
acPages, , , , itCopies
DoCmd.Close
acReport, stEtat
End
sub
Utilisation :
Sur un bouton Imprimer d'un formulaire :
fgImprimeCopiesEtat
(
"MonEtat"
,3
)
Ceci imprime trois exemplaires du même état.
Il faut utiliser la propriété Répéter section de l'en-tête de groupe concerné.
Sur une Jet d'encre, il faut prévoir une marge de bas d'au moins 1.5 cm sans quoi une page blanche survient.
Vous ne rencontrerez pas ce problème avec une laser.
Donc à vous de réduire les contrôles de votre état de manière à ce qu'il n'y ait plus qu'une page et d'accorder vos marges en conséquence.
Si vous voulez connaître la tolérance maxi de vos marges allez dans Word, prenez un document vierge, mettez toutes les marges à zéro et validez.
Là, Word va vous proposer de corriger, prenez ces valeurs sur un bout de papier et appliquez-les à votre état.
Il est aussi envisageable que vous ayez un saut de page invisible ou une propriété de section qui possède un saut de page.
Lien : Comment éviter les pages blanches lorsque l'on imprime un état ?
1) Créer un compteur dans la section détail
Contrôle texte
Nom : compteur
Source contrôle : =1
Cumul : en continu
2) Créer un regroupement sur l'enregistrement
Menu Affichage/Trier regrouper
insérer le champ clef unique
En-tête de groupe : non
Pied de groupe : oui
3) Dans le pied de groupe réduit au maximum de sa hauteur, insérer un saut de page.
Cliquer sur la zone pied de groupe et dans la propriété Au formatage
Ouvrir une procédure.
Y taper le code suivant :
Private
Sub
PiedGroupe0_Format
(
Cancel As
Integer
, FormatCount As
Integer
)
If
Me.Compteur
Mod
2
=
0
Then
Me.PrintSection
=
True
Else
Me.PrintSection
=
False
End
If
End
Sub
Chaque fois que le compteur aura une valeur paire (donc multiple de 2) le reste sera 0 et on imprime la section donc le saut de page.
- Allez dans paramètres / imprimantes.
- Ajoutez une nouvelle imprimante.
- Prenez n'importe laquelle.
- Donnez le port LPT1.
- Déclarez par défaut ou pas.
- Ne testez pas de page d'impression.
Vous devez maintenant pouvoir travailler les états sans aucun problème.
Ce phénomène s'observe lorsque la dimension de l'état ne correspond pas à celle du papier.
À vérifier :
- taille et orientation du papier ;
- taille des marges.
Cet exemple vous permet d'imprimer un document en PDF en le découpant page par page.
Dim
i As
Long
DoCmd.OpenReport
"Commandes"
, acViewPreview
For
i =
1
To
Reports
(
"Commandes"
).Pages
DoCmd.PrintOut
acPages, i, i
Next
En utilisant la boîte de dialogue du menu Affichage --> Trier et regrouper, dans les propriétés de cet en-tête de groupe, mettre la propriété Section insécable = Avec premier détail