Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 19h33   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 3
Points : 0
Points : 0
Par défaut personalisation d un etat avec vba

* Bonjour, *

Bon voila j'ai développer une application pour des caisses enregistreuses sous access 2003

mais je possède plusieurs points de vente et plusieurs marques imprimantes.
mon problème est lorsque je fais des modification sur mes logiciels je dois a chaque fois me reconnecter sur chaque point de vente pour faire une mise en pages

D'où ma question serai il possible à l'aide d une macro de mettre un code qui me redimensionne mes états au format que je désire

ps : dans le code sil y a possibilité d'avoir une impression direct sans aperçu

merci
spectrebb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2011, 17h44   #2
Membre éprouvé
 
Homme Robert LINCE
Conseiller psycho-pédagogique
Inscription : octobre 2007
Messages : 279
Détails du profil
Informations personnelles :
Nom : Homme Robert LINCE
Localisation : Belgique

Informations professionnelles :
Activité : Conseiller psycho-pédagogique
Secteur : Enseignement

Informations forums :
Inscription : octobre 2007
Messages : 279
Points : 478
Points : 478
Il y a peut-être un moyen plus simple, mais voici ce que j’utilise et qui fonctionne bien.
J’ai un module « Impressions » qui gère toutes les impressions.
Dans les Déclarations :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Private Type ch_PRTMIP
chRGB As String * 28
End Type
 
Private Type type_PRTMIP
xMargeGauche As Long
yMargeHaut As Long
xMargeDroite As Long
yMargeBas As Long
fDonnéesSeulement As Long
xLargeur As Long
yHauteur As Long
fTailleDesEléments As Long
xNombreDeColonnes As Long
yEspacementDeColonnes As Long
xEspacementDeLignes As Long
rDisposition As Long
fImpressionRapide As Long
fFeuilleDeDonnées As Long
End Type
 
Private Type ch_DEVMODE
RGB As String * 94
End Type
Private Type type_DEVMODE
chNomPériphérique As String * 16
entSpécVersion As Integer
entVersionGestionnaire As Integer
entTaille As Integer
entExtraGestionnaire As Integer
lngChamps As Long
entOrientation As Integer
entTaillePapier As Integer
entLongueurPapier As Integer
entLargeurPapier As Integer
entEchelle As Integer
entCopies As Integer
entSourceDéfaut As Integer
entQualitéImpression As Integer
entCouleur As Integer
entRectoverso As Integer
entResolution As Integer
entOptionTT As Integer
entAssembler As Integer
entNomFormulaire As String * 16
lngPad As Long
lngBits As Long
lngPW As Long
lngPH As Long
lngDFI As Long
lngDFr As Long
End Type
Puis les fonctions de « mise en page ». Voici trois exemples, le premier pour un mode paysage, le second pour un mode portrait, et le troisième pour des étiquettes:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Sub Paysage(Etat As String)
Const DM_PORTRAIT = 1
Const DM_PAYSAGE = 2
Dim ChaînePrtMip As ch_PRTMIP
Dim PM As type_PRTMIP
Dim ChaînePér As ch_DEVMODE
Dim DM As type_DEVMODE
Dim chExtraModPér As String
Dim rpt As Report
DoCmd.OpenReport Etat, acDesign
Set rpt = Reports(Etat)
chExtraModPér = rpt.PrtDevMode
ChaînePér.RGB = chExtraModPér
LSet DM = ChaînePér
DM.lngChamps = DM.lngChamps Or DM.entOrientation
DM.entOrientation = DM_PAYSAGE
LSet ChaînePér = DM
Mid(chExtraModPér, 1, 94) = ChaînePér.RGB
rpt.PrtDevMode = chExtraModPér
ChaînePrtMip.chRGB = rpt.PrtMip
LSet PM = ChaînePrtMip
PM.xMargeGauche = 835
PM.yMargeHaut = 835
PM.xMargeDroite = 835
PM.yMargeBas = 835
LSet ChaînePrtMip = PM ' Met à jour la propriété.
rpt.PrtMip = ChaînePrtMip.chRGB
DoCmd.Close acReport, Etat, acSaveYes
End Sub
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Sub MargesParDéfaut(Etat As String)
Dim ChaînePrtMip As ch_PRTMIP
Dim PM As type_PRTMIP
Dim rpt As Report
DoCmd.OpenReport Etat, acDesign
Set rpt = Reports(Etat)
ChaînePrtMip.chRGB = rpt.PrtMip
LSet PM = ChaînePrtMip
PM.xMargeGauche = 963 '1 * 1440 963=16,98mm
PM.yMargeHaut = 835 '1 * 1440
PM.xMargeDroite = 963 '1 * 1440
PM.yMargeBas = 835 '1 * 1440
LSet ChaînePrtMip = PM ' Met à jour la propriété.
rpt.PrtMip = ChaînePrtMip.chRGB
DoCmd.Close acReport, Etat, acSaveYes
End Sub
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Sub ColonnesA(Etat As String)
Dim ChaînePrtMip As ch_PRTMIP
Dim PM As type_PRTMIP
Dim rpt As Report
DoCmd.OpenReport Etat, acDesign
Set rpt = Reports(Etat)
ChaînePrtMip.chRGB = rpt.PrtMip
LSet PM = ChaînePrtMip
PM.xNombreDeColonnes = 2
PM.yEspacementDeColonnes = 422
PM.xEspacementDeLignes = 354
PM.xMargeGauche = 510	 '1 * 1440 963=16,98mm
PM.yMargeHaut = 432 		
PM.xMargeDroite = 310	
PM.yMargeBas = 835		
LSet ChaînePrtMip = PM ' Met à jour la propriété.
rpt.PrtMip = ChaînePrtMip.chRGB
DoCmd.Close acReport, Etat, acSaveYes
End Sub
Les valeurs de marges, espacements, etc … sont exprimées en twips. 1mm = 1440/25.4 twips. Donc, pour une marge de 17 mm, il faut mettre 963.

Lorsque l’on lance une impression, on applique la fonction qui convient à l’état qu’on imprime.
Exemple :
Code :
1
2
3
4
Function MonEtat()
MargesParDéfaut "MonEtat"
DoCmd.OpenReport "MonEtat", acPreview
End Function
Si tu veux que l’état s’imprime sans visualisation préalable, tu supprimes le ,acPreview.
Ce système a un inconvénient : la fonction qui permet la mise en page doit ouvrir l’état en mode création et le sauvegarder, donc, ça ne marche pas avec un fichier mde ou accde. L’ouverture et la fermeture lors de la mise en page sont quasi instantanées et pas gênantes.
Cordialement.
RobiPMS est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h13.


 
 
 
 
Partenaires

Hébergement Web