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 :

Ajustement automatique des colonnes [Toutes versions]


Sujet :

VBA Access

  1. #1
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut Ajustement automatique des colonnes
    Bonjour.
    Petite question peu utile mais pratique.
    Peut-on en VBA, ajuster les colonnes des tables dans Access à la manière d'Autofit dans Excel ?

    Merci d'avance à ceux qui prendront le temps de me lire.

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    Voila ce qui d'après mes connaissances s'en approche le plus :
    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
    Private Sub cmdLargeurAutoTable1_Click()
    Dim strTbl As String
    Dim fm As Access.Form, ctl As Access.Control
    Dim bytCtlType As Byte
     
    On Error GoTo ErrH
     
    strTbl = "Table1"
    DoCmd.OpenTable strTbl, acViewNormal
    ' Au cas où
    DoCmd.SelectObject acTable, strTbl
    Set fm = Screen.ActiveDatasheet
     
    For Each ctl In fm.Controls
        ctl.ColumnWidth = -2
    Next
     
    ExitSub:
    Exit Sub
     
    ErrH:
    Select Case Err.Number
    End Select
    MsgBox "Erreur " & Err.Number & " : " & Err.Description, , "cmdLargeurAutoTable1_Click()"
    Resume ExitSub
    End Sub
    C'est l'affectation de la valeur -2 à Columnwidth qui fait tout.

    A+

  3. #3
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Wow, le paramètre -2 n'est même pas évoqué dans l'aide de VBA
    Merci pour ta réponse.

    Je vais maintenant préciser ma demande.
    Je voudrais intégrer cet ajustement automatique à un code à moi dans lequel je crée des tables à la volée via DAO depuis un fichier texte.
    Je me suis fortement inspiré de ceci :
    http://warin.developpez.com/access/d...tie_4#L4.3.4.4

    Peut-on définir l'ajustement auto au moment de la création de la table ou faut-il intervenir après sa création ?

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,
    Citation Envoyé par azertix Voir le message
    Peut-on définir l'ajustement auto au moment de la création de la table ou faut-il intervenir après sa création ?
    Je ne sais pas.
    J'imagine que pour chaque colonne il faut parcourir les enregistrements pour déterminer la chaîne de caractères la plus longue.
    La fonction cachée TwipsFromFont peut-être utile.

    Ensuite on peut définir la propriété ColumnWidth des champs d'un objet TableDef
    Dans cet exemple je définis la largeur (en twips) de deux colonnes.
    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
    Sub LargColonneTableDef()
    Dim db As DAO.Database
    Dim tdef As DAO.TableDef
     
    Set db = CurrentDb
    Set tdef = db.TableDefs("tblTestLargCol")
     
    SetFieldProperty tdef.Fields("Champ1"), "ColumnWidth", 2000
    SetFieldProperty tdef.Fields("Champ2"), "ColumnWidth", 4000
     
    End Sub
     
    Sub SetFieldProperty(oFld As DAO.Field, sProp As String, vVal As Variant)
    Dim oProp As DAO.Property
     
    On Error GoTo ErrH
    Set oProp = oFld.Properties(sProp)
    ' Si la propriété n'exite pas on la crée et on l'ajoute
    ' à la collection
    If oProp Is Nothing Then
       Select Case sProp
           ' Type Integer
           Case "ColumnWidth", "ColumnOrder"
              Set oProp = oFld.CreateProperty(sProp, dbInteger, -1)
              oFld.Properties.Append oProp
           ' Type Boolean
           Case "ColumnHidden"
              Set oProp = oFld.CreateProperty(sProp, dbBoolean, False)
              oFld.Properties.Append oProp
       End Select
    End If
     
    oProp.Value = vVal
     
    SubExit:
    Exit Sub
     
    ErrH:
    Select Case Err.Number
        Case 3270 ' Propriété non trouvée.
             Resume Next
    End Select
    MsgBox Err.Number & " : " & Err.Description, , "Erreur"
    Resume SubExit
    End Sub
    A+

  5. #5
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    LedZeppII, une solution personnalisée à votre problème !

    Merci

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

Discussions similaires

  1. [XL-2007] ajustement automatique des colonnes dans l'ensemble des feuilles d'un classeur
    Par JYPIQ62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2012, 20h44
  2. [POI][HSSF] Problème ajustement automatique des colonnes
    Par Dark_TeToN dans le forum Documents
    Réponses: 1
    Dernier message: 19/10/2011, 10h43
  3. Ajustement automatique des colonnes
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/07/2010, 13h00
  4. [WD14] Ajustement automatique des colonnes
    Par thierrybatlle dans le forum WinDev
    Réponses: 2
    Dernier message: 28/07/2009, 10h08
  5. [WD14] Ajustement automatique des colonnes
    Par thierrybatlle dans le forum WinDev
    Réponses: 1
    Dernier message: 28/05/2009, 11h51

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