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

Philippe Tulliez

[Actualité] 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 à 15h05 (5481 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 a été testée avec les police Tahoma, taille à 8 et normal, ainsi que Calibri, taille 10 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 05/08/2023 à 09h14 par Philippe Tulliez

Catégories
VBA Excel

Commentaires

  1. Avatar de curt
    • |
    • permalink
    Bonjour Philippe,

    un billet (précieux) de plus à mettre dans la collection .... merci
  2. Avatar de Philippe Tulliez
    • |
    • permalink
    Bonjour Curt,
    Merci pour ton message congratulant.
    Philippe
    Citation Envoyé par curt
    Bonjour Philippe,

    un billet (précieux) de plus à mettre dans la collection .... merci