IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Access VBA : comment contrôler les marges d'un état


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 40
    Points : 22
    Points
    22
    Par défaut Access VBA : comment contrôler les marges d'un état
    Bonjour

    Combien de fois je me suis retrouvé avec 2 fois plus de pages sorties que ce que j'attends....

    Bref, comment contrôler les marges d'un état avant l'impression
    D'avance Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Quand tu es en mode Création Etat
    Fichier\Mise En page

    Je ne sais pas par contre si c'est possible dynamiquement

    Starec

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 40
    Points : 22
    Points
    22
    Par défaut Re: Access VBA : comment contrôler les marges d'un état
    Citation Envoyé par CBleu
    Bonjour

    Combien de fois je me suis retrouvé avec 2 fois plus de pages sorties que ce que j'attends....

    Bref, comment contrôler les marges d'un état avant l'impression
    D'avance Merci
    J'aurais dû préciser :
    comment contrôler dynamiquement les marges d'un état avant l'impression

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    j'ai le meme probleme

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 40
    Points : 22
    Points
    22
    Par défaut
    j'ai trouvé ce code dans l'aide d'access sur la propriété PrtMip ...

    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
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Exemple de propriété PrtMip
     
    L'exemple de propriété PrtMip suivant indique comment configurer l'état pour qu'il possède 2 colonnes horizontales.
     
    Type ch_PRTMIP
        chRGB As String * 28
    End Type
    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
     
    Sub PrtMipColonnes(chNom As String)
        Dim ChaînePrtMip As ch_PRTMIP
        Dim PM As type_PRTMIP
        Dim rpt As Report
        Const PM_HORIZONTALCOLS = 1953
        Const PM_VERTICALCOLS = 1954
        DoCmd.OpenReport chNom, acDesign
        Set rpt = Reports(chNom)
        ChaînePrtMip.chRGB = rpt.PrtMip
        LSet PM = ChaînePrtMip
        ' Crée deux colonnes.
        PM.entColonnes = 2 
        ' Définit 0,25 pouces d'espacement entre les lignes.
        PM.entEspacementDeLignes = 0.25 * 1440 
        ' Définit 0,5 pouces d'espacement entre les colonnes.
        PM.entEspacementDeColonnes = 0.5 * 1440
        PM.entDisposition = PM_HORIZONTALCOLS
     
        LSet ChaînePrtMip = PM            ' Met à jour la propriété.
        rpt.PrtMip = ChaînePrtMip.RGB
    End Sub
    L'exemple suivant de la propriété PrtMip indique comment définir toutes les marges pour qu'elles aient 1 pouce de large.
     
    Sub DéfinirMargesParDéfaut(chNom As String)
        Dim ChaînePrtMip As ch_PRTMIP
        Dim PM As type_PRTMIP
        Dim rpt As Report
        DoCmd.OpenReport chNom, acDesign
        Set rpt = Reports(chNom)
        ChaînePrtMip.chRGB = rpt.PrtMip
        LSet PM = ChaînePrtMip
        PM.entMargeGauche = 1 * 1440    ' Définit les marges.
        PM.entMargeHaut = 1 * 1440
        PM.entMargeDroite = 1 * 1440
        PM.entMargeBas = 1 * 1440
        LSet ChaînePrtMip = PM            ' Met à jour la propriété.
        rpt.PrtMip = ChaînePrtMip.chRGB
    End Sub
    le pb c'est que ca ne marche que en mode creation, mais cela permet de tester que les marges sont OK, et donc de valider ou d'annuler l'impression sur ouverture de l'état...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Points : 59
    Points
    59
    Par défaut
    Bonjour à tous,
    J'ai rencontré le même problème : malgré la mise en page de mes états, les marges se 'déparamétraient' tout le temps (très très énervant !).
    Le problème vient d'un bug d'access 2000 (pour ceux qui sont sous Access 2000). Il existe un correctif ( SR 1 ) à télécharger sur le site de microsoft.
    Depuis, mes états gardent la mise en page que je leur ai donné.

  7. #7
    Membre actif Avatar de ActionAccess
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 213
    Points
    213
    Par défaut
    Bonjour,

    Même principe que ce qui est proposé par Cbleu, mais où il est possible de mettre en paramètre les tailles des marges.

    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
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    ' *** Début du module Impression ***
    Option Compare Database
    Option Explicit
    Type ch_DEVMODE
        RGB As String * 94
    End Type
    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
    Type ch_PRTMIP
        chRGB As String * 28
    End Type
    Type type_PRTMIP
        entMargeGauche As Long
        entMargeHaut As Long
        entMargeDroite As Long
        entMargeBas As Long
        entDonnéesSeulement As Long
        entLargeur As Long
        entHauteur As Long
        entTailleDesEléments As Long
        entColonnes As Long
        entEspacementDeColonnes As Long
        entEspacementDeLignes As Long
        entDisposition As Long
        entImpressionRapide As Long
        entFeuilleDeDonnées As Long
    End Type
     
    Public Sub ModifierMarges(txtNom As String, lngHaut As Long, lngBas As Long, lngGauche As Long, lngDroite As Long)
    ' Modifier les marges d'un rapport avant de l'imprimer
    ' paramètres : 1- le nom du rapport en texte
    ' 2- la marge du haut en cm
    ' 3- la marge du bas en cm
    ' 4- la marge du gauche en cm
    ' 5- la marge du droite en cm
    ' exemple : 
    ‘ ModifierMarges "Contacts", 1, 1, 1.5, 1.5
    ' DoCmd.OpenReport "Contacts", acViewPreview
    Dim ChaînePrtMip As ch_PRTMIP
    Dim PM As type_PRTMIP
    Dim rpt As Report
    DoCmd.OpenReport txtNom, acDesign ' Ouvre l'état en mode Création.
    Set rpt = Reports(txtNom)
    ChaînePrtMip.chRGB = rpt.PrtMip
    LSet PM = ChaînePrtMip
    PM.entMargeHaut = lngHaut * 567 ' Définit les marges.
    PM.entMargeBas = lngBas * 567
    PM.entMargeGauche = lngGauche * 567
    PM.entMargeDroite = lngDroite * 567
    LSet ChaînePrtMip = PM ' Met à jour la propriété.
    rpt.PrtMip = ChaînePrtMip.chRGB
    DoCmd.Save
    End Sub
    Bon courage

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 71
    Points : 46
    Points
    46
    Par défaut
    Bonjour à tous,

    Je prends le train en route ...

    Je suis confronté au même pb et je voudrais tout simplement qu'à l'ouverture d'un Etat en mode aperçu avant impression, les marges de celui-ci se positionnent sur 1 cm chacunes.

    J'ai essayé d'utiliser le code de ActionAccess pour en faire une fonction appelée à l'ouverture de mes Etats en mode aperçu avant impression, mais sans résultat.
    De plus, si j'ai bien compris, ce code ouvrirait l'état en mode création pour indiquer les paramètres des marges.

    Naïvement, j'ai cherché un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Screen.ActiveReport.MargeDeGauche = 10
    mais chou blanc.

    Pourtant, ces valeurs de marges sont forcément stockées quelque part

    Merci d'un petit coup de pouce supplémentaire.

Discussions similaires

  1. [VBA] comment modifier les items des collections
    Par tangjuncn dans le forum Général VBA
    Réponses: 2
    Dernier message: 18/02/2014, 16h37
  2. Réponses: 9
    Dernier message: 04/04/2007, 12h01
  3. Réponses: 15
    Dernier message: 22/06/2006, 16h17
  4. Réponses: 3
    Dernier message: 19/05/2006, 11h05
  5. [TChart] Comment définir les marges d'un graphe ?
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 01/08/2005, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo