IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range

Noter ce billet
par , 19/03/2022 à 16h05 (461 Affichages)
Préambule
Lassé de perdre du temps à régler la largeur des colonnes d'un contrôle ListBox ou ComboBox d'un UserForm, je me suis construit une petite fonction qui me calcule automatiquement la largeur des colonnes du contrôle en fonction de la largeur des colonnes de la liste des données.

Pour rappel
C'est la propriété ColumnWidths qui permet de définir la largeur des colonnes d’un contrôle ListBox ou ComboBox.
Par défaut la largeur des colonnes est de 72 points (72 points=1 pouce).

Exemple :
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
Me.ListBox1.ColumnWidths = "0;30;60;60;20;20"
Si nous ajoutons ou supprimons une ou plusieurs colonnes de notre source de données, nous serons obligés de rectifier la valeur de cette propriété

Code de la procédure

Cette procédure nommée GetColumnWidths peut être placée dans le module du UserForm où se trouve le contrôle ou, c'est préférable, dans un module standard
La procédure fonctionne avec pour les propriétés du ListBox ou ComboBox une police Tahoma, taille à 8 et normal

Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Function GetColumnWidths(oRange As Range) As String
  ' Philippe Tulliez (www.magicoffice.be)
  Const cw As Double = 0.85
  Dim tcol As Variant, c As Long
  With oRange
   ReDim tcol(.Columns.Count - 1)
   For c = 1 To .Columns.Count
    tcol(c - 1) = .Cells(1, c).Width * cw
   Next
  End With
  GetColumnWidths = Join(tcol, ";")
End Function

Comment l'invoquer ?

Pour l'exemple, on définit la propriété ColumnWidths du ListBox nommé ListBox1 en fonction de la largeur des colonnes du tableau structuré nommé t_Data. Cette ligne de code se trouve dans le module du UserForm (Me)
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
Me.ListBox1.ColumnWidths = GetColumnWidths(Range("t_Data"))

Tutoriels
Quelques tutoriels à lire pour en savoir plus sur les UserForm, les contrôles dans un UserForm, les tableaux structurés

Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog Viadeo Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog Twitter Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog Google Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog Facebook Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog Digg Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog Delicious Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog MySpace Envoyer le billet « VBA Excel - ColumnWidths d'un ListBox/ComboBox d'un UserForm par rapport à la largeur des colonnes d'un Range » dans le blog Yahoo

Mis à jour 16/05/2022 à 08h13 par Philippe Tulliez

Catégories
VBA Excel

Commentaires