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: champs auto extensibles


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 32
    Points
    32
    Par défaut Etat: champs auto extensibles
    Bonjour,

    Dans mon état, j'ai plusieurs zone de texte, disposé de façon à former un tableau. Dans ces zones de texte, je peux avoir du texte qui dépasse le format de la case définit, et donc j'utilise le champ auto extensible. Cependant, dans ce cas,l'alignement se retrouve complétement bouleversé.
    Pour régler le format du quadrillage, j'utilise ce code que j'ai trouvé sur le forum:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For Each MonControl In Détail.Controls 'Parcours tous les controls de la zone détail
                If MonControl.ControlType = acLine Then ' une ligne verticale à droite
                    X1 = [MonControl].Left + [MonControl].Width
                Else
                    X1 = [MonControl].Left 'dans les autres cas se place à gauche des controls
                End If
                Me.Line (X1, 0)-(X1, Controlmax.Height)    ' Dessine une ligne verticale
        Next
    Avec ce code, je règle la hauteur des cases par rapport à la hauteur d'un champ préalablement défini (Controlmax). Ce code fonctionne parfaitement, mais je voudrais pouvoir repérer la case ayant la plus grande hauteur sur chaque ligne pour ensuite régler la hauteur.

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    À mettre dans le rapport :

    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
    private function TrouverHauteurMax() as long
     
        dim result as long:result=0
     
        For Each MonControl In Détail.Controls 'Parcours tous les controls de la zone détail
     
                If MonControl.ControlType = acTextbox Then ' une 
     
                    if result<monControl.height then
                        'Plus grand que ce qu'on a déjà trouvé
                        result=monControl.height 
                    end if
     
                end if
     
        Next MonControl
     
        TrouverHauteurMax=result
    end function
    À appeler juste avant le tracé des traits.

    Note qu'une autre méthode consiste à agrandir les boites de texte toutes à la même hauteur et a activer les bordures des boites. Cela évite de se trainer des traits qui peuvent être pénibles lorsqu'on fait des modifications au rapport.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 32
    Points
    32
    Par défaut
    Merci marot_r pour ta réponse.

    Cependant je suis pas sur que ton code fonctionne dans mon cas

    Nom : Capture1.PNG
Affichages : 550
Taille : 30,0 Ko
    Comme on peut le voir sur la photo, c'est le tableau qui pose problème. Si je comprend bien le code que tu as proposés je prend la hauteur max des contrôles de mon état. Cependant j'aimerais effectué cette opération par ligne. Mon état tient juste sur une page, je ne voudrais pas que mon tableau soit trop grand.
    De plus avec le code que j'utilisais, je mettais un trait horizontal en dessous mais j'avais qu'une seule ligne (que l'on retrouvait X fois) dans la partie détail de mon rapport. La c'est des cases différentes, donc comment réglé la hauteur de ce trait.
    En faite il faudrait que je puisse repérer chaque ligne pour pouvoir boucler sur celle-ci.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    oui tu peux être un peu plus subtil et ne manipuler que les contrôles qui t'intéresse. Ici une suggestion :

    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
    private function TrouverHauteurMax() as long
     
        dim result as long:result=0
     
        For Each MonControl In Détail.Controls 'Parcours tous les controls de la zone détail
     
                If MonControl.ControlType = acTextbox Then ' une 
     
                   select case monControl.name
                        case "NomControl1", "NomControl2", "NomControl3"
     
                          if result<monControl.height then
                             'Plus grand que ce qu'on a déjà trouvé
                              result=monControl.height 
                          end if
     
                        case else
                           'Ne rien faire
     
                  end select
     
                end if
     
        Next MonControl
     
        TrouverHauteurMax=result
    end function
    Sinon est-ce que ton tableau est dans une section à part (ex : détail) ?

    Si oui, tu peux limiter ta recherche des contrôles à cette section avec un truc du genre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for each MonControl in me.section(acDetail).controls
    A+

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 32
    Points
    32
    Par défaut
    Mon tableau est effectivement dans la section Détail, mais comme d'autres contrôles donc ça m'avancerait pas forcément plus.

    Ah oui la piste du Case est intéressante par contre. Je vais travailler dessus. Je te tiens au courant.

    A++

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si tu ne veux pas avoir a utiliser le select case ... end case tu pourrais mettre les lignes de ton tableau dans un sous-état.

    Comme cela ton état ne contiendrai plus que les éléments qui t'intéressent.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 32
    Points
    32
    Par défaut
    finalement j'ai tracé chaque ligne horizontal et vertical avec le code vba correspondant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Line (Me.X.Left, Me.X.Top)-(Me.G59X.Left + Me.G59X.Width, Me.G59X.Top)
    Merci pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2015, 16h40
  2. Champ auto extensible dans un état
    Par devdev dans le forum IHM
    Réponses: 5
    Dernier message: 26/02/2010, 19h27
  3. Réponses: 0
    Dernier message: 07/02/2008, 05h52
  4. Champs Auto Extensibles
    Par ThunderBolt_ dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/07/2007, 14h14
  5. [Etat][access] auto extensible
    Par totofe dans le forum IHM
    Réponses: 13
    Dernier message: 27/06/2007, 10h28

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