colonne listview auto

fhoest

XLDnaute Accro
Bonjour a tous

Dans le but d'automatiser la largeur de colonne d'une listview,je vous propose le moyen de définir la largeur en automatique d'un texte sans la fonction Len

Si vous avez une autre solution pour moi je suis preneur.

Yann-56 m'a aiguillé en me disant après avoir utilisé la fonction len que la longeur d'un mot été différent par exemple:"wwwm" et plus grand que "iiii" qui contient le même nombre de caractère c'est pourquoi la fonction Len ne marche pas
Un grand merci a lui pour cette précision auquel je n'avais pas penser
Bon week end a tous
 

Pièces jointes

  • width listview auto_fhoest.zip
    20.1 KB · Affichages: 100

Sylvain

XLDnaute Occasionnel
Re : colonne listview auto

Bonjour,

Un petit bricolage pour continuer ton idée, mais pour l'adapter à toutes les données et non pas uniquement à l'entête. J'utilise le textbox comme base pour regarder la proportion entre une colonne d'excel ajustée et le texte dans le textbox. Puis j'ajuste les colonnes dans excel (ce qui permet de tenir compte de toutes les lignes et pas seulement de l'entête).
Je reporte cette proportion à toutes les entêtes de la listview.

Code:
Private Sub CommandButton2_Click()
  Dim proportion
  Range("h1").Value = "Bonjour ça va ? Et toi ? Moi ça va et toi ?"
  Range("h1").EntireColumn.AutoFit
  TextBox1.Value = Range("h1").Value
  proportion = largeur_colonne_listview / Range("h1").Width * 1.1
  Range("a:f").EntireColumn.AutoFit
  ListView1.ListItems.Clear
  
  Dim largeur_colonne_listview_1 As Integer
  Dim c As Range
  With Me.ListView1
      With .ColumnHeaders
          .Add , , Sheets(1).Range("a1").Value, Range("a1").Width * proportion
          .Add , , Sheets(1).Range("b1").Value, Range("b1").Width * proportion
          .Add , , Sheets(1).Range("c1").Text, Range("c1").Width * proportion
          .Add , , Sheets(1).Range("d1").Text, Range("d1").Width * proportion
          .Add , , Sheets(1).Range("e1").Text, Range("e1").Width * proportion
      End With
       .View = 3
      .Gridlines = True
  End With
End Sub
 

fhoest

XLDnaute Accro
Re : colonne listview auto

Bonsoir
Merci pour l'idée j'avais penser également uitliser la même méthode que pour les entêtes.je l'avais d'ailleurs inscrit dans la pièce jointe,mais la méthode que tu propose est intéressante,par contre comment détermine tu le fait de devoir multiplié par 1,1 dans un mode auto(juste une question?)
A+
 

YANN-56

XLDnaute Barbatruc
Re : colonne listview auto

Bonsoir fhoest, Sylvain, et à ceux qui passeront par ici,

Déjà une petite idée:
Au lieu de se farcir, ce qui pourrait devenir très long:

Code:
 With Me.ListView1
          .Add , , Sheets(1).Range("a1").Value…. puis "b1", "c1", "d1", "e1" Et c.

Il serait plus court d'écrire:

Code:
For i = 1 to 5
          .Add , , Sheets(1). Cells(1, i).Value
Next i

Par ailleurs, je choisirais d'adapter en faisant passer mes Items et SubItems
par un Label dont "WordWrap" est False, et "AutoSize" est True, d'enregistrer
sa plus grande largeur et de l'appliquer à la colonne concernée de la ListView.

En écrivant ceci je me dis que l'on pourrait même, en modifiant sous conditions
les paramètres de ce dernier; changer le ForeColor, et Bold de ceux-ci.

Il est un peu tard pour que je construise un exemple, mais je vais y revenir.

Amicalement.

Yann
 

Habitude

XLDnaute Accro
Re : colonne listview auto

Bonjour a tous

Dans le but d'automatiser la largeur de colonne d'une listview,je vous propose le moyen de définir la largeur en automatique d'un texte sans la fonction Len

Si vous avez une autre solution pour moi je suis preneur.

Yann-56 m'a aiguillé en me disant après avoir utilisé la fonction len que la longeur d'un mot été différent par exemple:"wwwm" et plus grand que "iiii" qui contient le même nombre de caractère c'est pourquoi la fonction Len ne marche pas
Un grand merci a lui pour cette précision auquel je n'avais pas penser
Bon week end a tous

Certaine police offerte utilise la même largeur, peu importe le caractère.
Utiliser l'une d'entre elle, comme par exemple "Courrier New"
aaa
iii
www
calculer la proportion (%) de la largeur.
Et l'appliquer sur la police voulu.
 

fhoest

XLDnaute Accro
Re : colonne listview auto

Bonjour, Sylvain,Yann-56,Habitude.

Merci pour les avis différents,

Yann la méthode est juste pour ne pas se farcir toutes ces lignes,c'est vrai pour l'exemple joint mais parfois on choisi certaine colonne qui ne suivent pas forcement un ordre d'incrémentation logique,mais dans ce cas ci c'est vrai que cela serait beaucoup plus simple comme tu l'a écrit,de plus ton idée d'enregistrement de la plus grande largeur est intéressante cela évite d'intercaler a chaque fois un appel d'un autre sub, (pas mal)

Habitude, j' ignoré que certaines polices permettaient de palier au problème citer avec la fonction Len, merci pour cette précision.

;)ces différents avis m'on fait une fois de plus avancer dans ma façon de penser ce genre de code. je vous en remercie

A bientot
 

Discussions similaires

Statistiques des forums

Discussions
312 094
Messages
2 085 242
Membres
102 833
dernier inscrit
Hassna