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

Access Discussion :

Etat et commande "Mise en Page"


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Etat et commande "Mise en Page"
    Salut à tous,

    Pour faire simple, j'ai un état (cf pièce jointe) qui comporte entre autre un sous-état (placé dans une entête de groupe) qui possède plusieurs zones de textes dépendantes placées en colonne, les unes au dessus des autres. J'ai mis autoextensible à OUI sur ces zones de textes car je peux avoir des phrases assez longues.

    En m'inspirant de certains posts du forum, j'ai pondu un bout de code qui me permet de créer des rectangles pour encadrer ces zones de textes sur l'événement SurImpression et également pour décaler ces zones de textes car étant donné qu'elles sont placées les unes au dessus des autres, si il y en a une qui s'agrandit elle va chevaucher sur celle de dessous donc il faut décaler celle du dessous.

    Jusque là tout va bien sauf que lorsque je fais aperçu avant impression de mon état, les rectangles sont bien tracées mais les zone de texte ne sont pas décalées comme il faut. Au départ j'ai cru que c'était mon code qui ne marchait pas mais en faisait des essais, je me suis aperçu qu'en allant dans "Mise en Page", en modifiant ou non les valeurs des marges et en revenant à mon état, celui ci se rafraichit et mes zones de textes se placent au bon endroit.

    Je n'arrive pas à savoir véritablement à quoi cela est dû. J'ai des valeurs minimales de marge que je ne peux pas modifier (à cause de mon imprimante je pense) mais même lorsque je vais dans mise en page (mêm sans faire de modifs!) et que je reviens à mon état, tout se met en place comme il faut.

    Alors je vous demande si vous savez quelle action se passe après être allé dans Mise en Page ou si vous avez une solution à mon problème? J'ai essayé de faire un repaintObject, un requery ou un refresh sur mon état mais en vain...
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J’utilise l’événement sur impression de la section détail de mon sous-état pour récupérer les valeurs des plus grandes hauteurs de chaque zone de texte dans des variables globales initialisées à 0 dans l’événement Ouverture de mon état:

    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
    Public Sub Détail_Print(Cancel As Integer, PrintCount As Integer)
     
        Dim valleft As Long, valtop As Long
        Dim lngCouleur As Long
     
        nb_passage = nb_passage + 1
     
        Debug.Print "Sur impression sous-état " & nb_passage
     
        If h_nomnua < Me.NOMNUA.Height Then
            h_nomnua = Me.NOMNUA.Height
        End If
     
        If h_norme < Me.NORME.Height Then
            h_norme = Me.NORME.Height
        End If
     
        If h_etatth < Me.ETATTH.Height Then
            h_etatth = Me.ETATTH.Height
        End If
     
        If h_section < Me.Controls("SECTION").Height Then
            h_section = Me.Controls("SECTION").Height
        End If
     
        If h_valtol < Me.VALTOL.Height Then
            h_valtol = Me.VALTOL.Height
        End If
     
        If h_quanti < Me.QUANTI.Height Then
            h_quanti = Me.QUANTI.Height
        End If
     
        If h_prix < Me.PRIX.Height Then
            h_prix = Me.PRIX.Height
        End If
     
        If h_delai < Me.DELAI.Height Then
            h_delai = Me.DELAI.Height
        End If
     
        If h_modtrans < Me.MODTRANS.Height Then
            h_modtrans = Me.MODTRANS.Height
        End If
     
     
        valleft = 3.6 * 567
     
        valtop = 0   
     
     
        lngCouleur = RGB(0, 0, 0)
     
     
        ' on trace les cadres des champs
     
        Me.Line (0, valtop)-(valleft, valtop + h_nomnua), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua)-(valleft, valtop + h_nomnua + h_norme), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua + h_norme)-(valleft, valtop + h_nomnua + h_norme + h_etatth), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua + h_norme + h_etatth)-(valleft, valtop + h_nomnua + h_norme + h_etatth + h_section), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua + h_norme + h_etatth + h_section)-(valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol)-(valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti)-(valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix)-(valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix + h_delai), lngCouleur, B
     
        Me.Line (0, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix + h_delai)-(valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix + h_delai + h_modtrans), lngCouleur, B      
     
    End Sub
    Ensuite dans l’évènement Sur la Page de mon état, je trace les cadres des étiquettes et je décale ces étiquettes, avec les valeurs des hauteurs préalablement récupérées, pour qu’elles coïncident avec les cadres:
    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
    Public Sub Report_Page()
     
        Dim valleft As Long, valtop As Long
        Dim lngCouleur As Long
     
        nb_passage = nb_passage + 1
     
        Debug.Print "Sur la page état " & nb_passage
     
     
        valleft = 3.7 * 567
        valtop = Me.EntêteÉtat.Height
     
        lngCouleur = RGB(0, 0, 0)
     
        ' on trace les cadres des étiquettes
     
        Me.Line (Me.Étiquette200.Left, valtop)-(Me.Étiquette200.Left + valleft, valtop + h_nomnua), lngCouleur, B
     
        Me.Line (Me.Étiquette201.Left, valtop + h_nomnua)-(Me.Étiquette201.Left + valleft, valtop + h_nomnua + h_norme), lngCouleur, B
     
        Me.Line (Me.Étiquette202.Left, valtop + h_nomnua + h_norme)-(Me.Étiquette202.Left + valleft, valtop + h_nomnua + h_norme + h_etatth), lngCouleur, B
     
        Me.Line (Me.Étiquette203.Left, valtop + h_nomnua + h_norme + h_etatth)-(Me.Étiquette203.Left + valleft, valtop + h_nomnua + h_norme + h_etatth + h_section), lngCouleur, B
     
        Me.Line (Me.Étiquette204.Left, valtop + h_nomnua + h_norme + h_etatth + h_section)-(Me.Étiquette204.Left + valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol), lngCouleur, B
     
        Me.Line (Me.Étiquette205.Left, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol)-(Me.Étiquette205.Left + valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti), lngCouleur, B
     
        Me.Line (Me.Étiquette206.Left, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti)-(Me.Étiquette206.Left + valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix), lngCouleur, B
     
        Me.Line (Me.Étiquette207.Left, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix)-(Me.Étiquette207.Left + valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix + h_delai), lngCouleur, B
     
        Me.Line (Me.Étiquette208.Left, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix + h_delai)-(Me.Étiquette208.Left + valleft, valtop + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix + h_delai + h_modtrans), lngCouleur, B
     
     
        ' on décale les étiquettes
            Me.Étiquette200.Top = 0
     
        Me.Étiquette201.Top = Me.Étiquette200.Top + h_nomnua
        Me.Étiquette202.Top = Me.Étiquette200.Top + h_nomnua + h_norme
        Me.Étiquette203.Top = Me.Étiquette200.Top + h_nomnua + h_norme + h_etatth
        Me.Étiquette204.Top = Me.Étiquette200.Top + h_nomnua + h_norme + h_etatth + h_section
        Me.Étiquette205.Top = Me.Étiquette200.Top + h_nomnua + h_norme + h_etatth + h_section + h_valtol
        Me.Étiquette206.Top = Me.Étiquette200.Top + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti
        Me.Étiquette207.Top = Me.Étiquette200.Top + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix
        Me.Étiquette208.Top = Me.Étiquette200.Top + h_nomnua + h_norme + h_etatth + h_section + h_valtol + h_quanti + h_prix + h_delai               
     
    End Sub
    Je ne sais toujours pas pourquoi mais lorsque j’affiche mon état en aperçu avant impression, le étiquettes ne sont pas décalées. Mais lorsque je vais dans mise en page et que je reviens, l’état se rafraîchit et les étiquettes se retrouvent en bonne position.

    En mettant des debug.print j’ai remarqué que lorsque l’on va dans Mise en page et qu’on revient à l’état, on repasse dans l’événement Sur impression de la section détail du sous-état et dans l’événement Sur la Page de mon état.
    J’essaye donc de forcer ce passage avec du code mais je n’y arrive pas. Peut-on appeler par le code une procédure liée à un événement (en l’occurrence ici, puis je appeler la procédure Sur impression de la section détail de mon sous-état depuis la procédure Sur la page de mon état ?)

    J’espère que vous comprenez quelque chose à mon problème…

Discussions similaires

  1. [Etat] Mise en page
    Par Fredri dans le forum IHM
    Réponses: 2
    Dernier message: 22/12/2005, 17h16
  2. [Etat] Mise en page
    Par bondyfalat dans le forum IHM
    Réponses: 4
    Dernier message: 22/12/2005, 09h17
  3. probléme mise en page etat
    Par Fredou1982 dans le forum Access
    Réponses: 1
    Dernier message: 16/09/2005, 16h57
  4. Grrr ACCESS ETAT WORD et mise en page
    Par RedBurn dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/04/2005, 10h56

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