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

Macros et VBA Excel Discussion :

[E-03] Autosize des colonnes d'une ListBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut [E-03] Autosize des colonnes d'une ListBox
    Bonjour à tous,

    Comment puis-je rendre autosize le redimensionnement des colonnes
    d'une ListBox ?

    Voila un début.

    http://cjoint.com/?kxnQCAG3Lf

    Merci.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tout dépend du format des caractères utilisé dans tes listbox (font)
    La formule "Taille des caractères * Nombre de caractères pour le mot le plus long" devrait pouvoir t'aider à régler le problème.
    Une boucle sur tous les mots inclus dans la liste serait nécessaire (!)
    Ça devrait donner un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Activate()
    Dim i As Integer, nbcar As Byte
        For i = 0 To ListBox1.ListCount - 1
            If Len(ListBox1.List(i)) > nbcar Then
                nbcar = Len(ListBox1.List(i))
            End If
        Next
        ListBox1.Width = 7 * nbcar
        Me.Repaint
    End Sub
    7 étant une valeur empirique que tu devras adapter en tâtonnant
    C'est le bricolage le moins lourd que je connaisse
    Toute autre solution plus sioux m'intéresserait également

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, Ousk,

    La solution "de sioux" sous VB6 est ultrasimple.
    Sous VBA, maintenant ?
    Là, il va falloir mettre une oreille à terre et écouter les vibrations ...
    Ah ... Les voilà, justement ... et elles me disent :
    -utilier un Label invisible avec la même Font et taille de Font et sa propriété Autosize à True
    - envoyer dans son caption le texte le plus long
    - mesurer maintenant sa taille (Width)

    Et vla tout : on connait maintenant cette largeur ...

  4. #4
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour à tous,

    ouskel'n'or J'ai deja essayé avec l'idée des caracteres, mais je n'arrive toujours pas

    ucfoutu En PJ un exemple avec des Label.

    Mais pas encore réussi
    Fichiers attachés Fichiers attachés

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par apt Voir le message
    ucfoutu En PJ un exemple avec des Label.

    Mais pas encore réussi
    Tu n'as manifestement pas lu ma signature ....

  6. #6
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour ucfoutu,

    D'accord, le voila mon 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
    Private Sub UserForm_Initialize()
        Dim Plg As Range, Cw1 As Long, Cw2 As Long
        ReDim Tablo(1, 0)
        Set Plg = Range([B2], [B2].End(xlDown))
     
        Cw1 = 0: Cw2 = 0
        S1 = "": S2 = ""
     
        For Each Lg In Plg
            Tablo(0, UBound(Tablo, 2)) = Lg
            Tablo(1, UBound(Tablo, 2)) = Format(Lg.Offset(0, 1), "# ##0.00")
            If Len(Lg) > Len(S1) Then S1 = Lg
            If Len(Lg.Offset(0, 1)) > Len(S2) Then S2 = Lg.Offset(0, 1)
            ReDim Preserve Tablo(1, UBound(Tablo, 2) + 1)
        Next Lg
        ReDim Preserve Tablo(1, UBound(Tablo, 2) - 1)
     
        Label1.Caption = S1
        Label2.Caption = S2
        Cw1 = Label1.Width
        Cw2 = Label2.Width
     
        With ListBox1
            .Width = 20 + (Cw1 + Cw2)   '
            .ColumnCount = 2    'prévoir d'avance pour ci-dessous
            .ColumnWidths = Cw1 & ";" & Cw2
            .List = Application.Transpose(Tablo)
            .MultiSelect = 2
            .BackColor = RGB(204, 204, 255)
        End With
     
        Me.Width = ListBox1.Width + 20
        CommandButton1.Left = (Me.Width / 2) - (Me.CommandButton1.Width / 2)
     
    End Sub

Discussions similaires

  1. [XL-2003] Problème de décalage des colonnes dans une listbox
    Par -Naek- dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2009, 20h06
  2. [VBA-E] Séparer les colonnes d'une listbox par des lignes?
    Par mulot03 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2006, 14h03
  3. [Firebird 1.5] nom des colonnes d'une table
    Par c0rwyn dans le forum SQL
    Réponses: 4
    Dernier message: 03/09/2004, 14h44
  4. Tri des colonnes d'une DBGRID
    Par Atrebate62 dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/05/2004, 12h20
  5. [VB.NET] Enregistrement des éléments d'une listBox
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/05/2004, 14h48

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