par , 19/03/2022 à 15h05 (5765 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 :
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 a été testée avec les police Tahoma, taille à 8 et normal, ainsi que Calibri, taille 10 et normal.
.
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)
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