jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 1 déc. 2006 à 22:49
Bon...
Je dois aller dormir...
Alors voilà :
ta listbox list1 dans un Frame Frame1. Donne à la propriété Width de ta list1 une valeur bien plus importante que nécessaire et donne à ton Frame1 une valeur Wodth compatible avec ce que tu veux à l'affichage (donc bien plus petite que List1.Width
en bas (ou en haut, comme tu veux) de ton Frame1 : une Hscrollbar Hscroll1
code :
Private Sub Form_Activate()
With HScroll1
.Max = List1.Width
.SmallChange = 10
.Value = 0
.Width = Frame1.Width
.Height = 315
End With
List1.Move 0, 0
Frame1.BorderStyle = 0
End Sub
Private Sub HScroll1_Change()
List1.Left = -HScroll1.Value
End Sub
Private Sub HScroll1_Scroll()
HScroll1_Change
End Sub
Je n'aime généralement pas servir du tout cuit, mais tu as de la chance (j'ai sommeil)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 déc. 2006 à 23:57
Tu peux aussi y arriver en passant par l'API SendMessage
À déclarer dans un module (ou en Private dans une feuille):
Option Explicit
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Const LB_SETHORIZONTALEXTENT = &H194
Public Sub AddScroll(List As ListBox)
Dim I As Integer, intGreatestLen As Integer, lngGreatestWidth As Long
'Trouver la plus longue chaîne de caractères de la listbox
For I = 0 To List.ListCount - 1
If Len(List.List(I)) > Len(List.List(intGreatestLen)) Then
intGreatestLen = I
End If
Next I
'Space(1) est utilisé pour empêcher le dernier caractère d'être coupé
lngGreatestWidth = List.Parent.TextWidth(List.List(intGreatestLen) + Space(1))
'Convertir en Pixels
lngGreatestWidth = lngGreatestWidth \ Screen.TwipsPerPixelX
'Utiliser SendMessage pour ajouter la ScrollBar
SendMessage List.hwnd, LB_SETHORIZONTALEXTENT, lngGreatestWidth, 0
End Sub
Pour afficher la barre, une fois la listbox remplie
AddScroll List1 ' en supposant que "List1" est le nom du contrôle Listbox
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 1 déc. 2006 à 23:59
Bonsoir,
Une listbox sert en général à afficher des valeurs courtes, liste de noms, de chiffres...
SI tu veux y mettre une valeur trés longue, c'est qu'il y a au départ une erreur d'analyse ou le choix du control rdt inadéquat.
Mieux vaux avoir une liste d'identifiants ou de noms dans la listbox et afficher dans une textbox multiligne au dessous le texte long associé (en utilisant le onclick de la listbox par exemple) . L'utilisation de la barre système en pied de form est aussi une solution possible.