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

IHM Discussion :

Comment figer la largeur des colonnes dans une feuille de données?


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut Comment figer la largeur des colonnes dans une feuille de données?
    Bonjour

    Comment déterminer et figer la largeur des colonnes dans une feuille de données afin qu'elle ne puisse être modifié qu'en mode création?

    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
    Malheureusement je ne pense pas qu'on puisse.

    Vérifie en sélectionnant toutes tes colonnes et en faisant 'Figer les colonnes'.

    La seule solution que j'avais trouvée c'est d'enregistrer la largeur des colonnes dans un tableau à l'ouverture du formulaire puis en réassignant ces valeurs en fermant le formulaire.

    Je ne me souviens plus du code que j'avais utilisé mais je pense qu'il doit être dans une de mes discussions du forum.

    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
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 432
    Points
    19 432
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Suivant l'idée de Marot_r, sur ouverture du formulaire, tu enregistres la largeur de la colonne du contrôle TonControle dans la variable LargCol :

    et après sur souris relâchée tu restitue cette largeur, comme cela la colonne reste avec la même largeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Compare Database
     
    Dim largCol
     
    Private Sub Form_Open(Cancel As Integer)
    LargCol = Me.TonControle.ColumnWidth
     
    End Sub
     
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Me.TonControle.ColumnWidth = LargCol
     
    End Sub
    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  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
    Merci User, c'est ce genre de code auquel je pensais.

    Je n'implanterai pas forcément ton code car il risque de faire faire une crise de nerf à plus d'un utilisateur :-).

    Un truc qui serait "cool" ce serait de disposer de la fonction 'largeur automatique'. Celle d'Access qui détermine la taille des colonnes à afficher selon les données qu'elles contiennent comme lorsqu'on double-clique entre deux colonnes.

    je n'ai jamais vu de code qui l'appelait, est-ce possible ?

    C'est totalement pour le 'fun' je n'ai pas de demande client dans ce sens.

    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
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 432
    Points
    19 432
    Billets dans le blog
    63
    Par défaut
    Salut cher Marot_r

    Désolé pour le retard...

    Oui j'avoue que le code est assez tiré par les cheveux

    Sinon, je regarde le code pour appliquer la "largeur automatique" mais ca me paraît pas simple (c'est marrant : tu as toujours des demandes assez originales ). Je te tiens au courant si je trouve
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 432
    Points
    19 432
    Billets dans le blog
    63
    Par défaut
    ReSalut,

    Pour ajuster la largeur des colonnes dans les feuilles de données il y a ce code de Lebans.

    Bon test
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    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
    Cool !

    Merci User.

    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.

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Bonjour,

    Je rebondis sur le sujet : j'ai bien réussi à dimensionner mes colonnes en fonction des données, en utilisant le code de Lebans.
    Mais j'aimerai que si l'entête de colonne est plus large que la largeur maxi des données, la taille de la colonne soit ajustée à l'entête.
    Bref, il faudrait que je récupère la largeur de l'entête.

    Quelqu'un aurait-il une idée de génie ?

    Merci.
    [Access] Les bases du débogage => ici

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    J'ai trouvé et voici le code :
    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
    Private Function SetColumnsWidth(pFrm As Form) As Integer
    Dim x                         As Long
    Dim lngMaxWidth               As Long
    Dim varTemp                   As Variant
    Dim iRec_DAO                  As DAO.Recordset
    Dim iLng_Longueur()           As Long
    Dim i                         As Integer
    Dim iCtl                      As Control
     
        Set iRec_DAO = pFrm.RecordsetClone
        iRec_DAO.MoveFirst
     
        ReDim iLng_Longueur(iRec_DAO.Fields.count - 1)
        For i = 0 To iRec_DAO.Fields.count - 1
            For Each iCtl In pFrm
                If iCtl.ControlSource = iRec_DAO.Fields(i).Name Then
                    iLng_Longueur(i) = fTextWidth(pFrm, iCtl.Name)
                End If
            Next
        Next
     
        Do While Not iRec_DAO.EOF
            For i = 0 To iRec_DAO.Fields.count - 1
                varTemp = iRec_DAO.Fields(i).Value
                x = fTextWidth(pFrm, varTemp)
                If x > iLng_Longueur(i) Then iLng_Longueur(i) = x
            Next
            iRec_DAO.MoveNext
        Loop
     
        For i = 0 To iRec_DAO.Fields.count - 1
            For Each iCtl In pFrm
                If iCtl.ControlSource = iRec_DAO.Fields(i).Name Then
                    iCtl.ColumnWidth = iLng_Longueur(i)
                End If
            Next
        Next
    End Function
    La fonction fTextWidth provient du code de Lebans.

    Prochaine étape :
    - Positionner le formulaire en haut de l'écran et plus ou moins à gauche en fonction de la somme des largeurs des colonnes
    - Dimensionner la largeur du formulaire en fonction de la somme des largeurs des colonnes.

    Si certains se sont déjà penchés sur le problème, je suis preneur.
    Merci.
    [Access] Les bases du débogage => ici

  10. #10
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour, Kloun

    En jouant avec le Docmd.Movesize et un peu d'arithmétique,
    tu devrais arriver à tes fins ...
    "Always look at the bright side of life." Monty Python.

Discussions similaires

  1. [WD11] comment inserer automatiquement des colonnes dans une table
    Par incomparable dans le forum WinDev
    Réponses: 3
    Dernier message: 31/08/2009, 13h51
  2. Comment figer les largeurs des colonnes d'un TListView ?
    Par Gaadek dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/06/2008, 14h28
  3. Nombre de colonnes dans une feuille de données
    Par steps5ive dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2007, 21h52
  4. Comment stocker des images dans une base de données ?
    Par [Silk] dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 11h29
  5. Fixer la largeur des colonnes d'une CListCtrl
    Par Depteam1 dans le forum MFC
    Réponses: 4
    Dernier message: 28/06/2005, 15h46

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