Revenir à la ligne ListBox

  • Initiateur de la discussion Yann
  • Date de début
Y

Yann

Guest
Bonjour à tous,

Encore une petite question qui me turlupine: est-il possible dans une listBox de revenir à la ligne lorsque le texte sélectionné est plus long que la largeur de la listBox ? (éviter la srollbar verticale)

Merci bcp d'avance.

Yann
 
@

@+Thierry

Guest
Bonjour Yann, le Forum

Comme Dan te l'a fait remarquer, il vaut mieux rester dans le même fil.

Car si tu n'as pas eu de réponse c'est tout simplement parceque c'est impossible de faire un retour à la ligne dans une ListBox MSForm 2.0.

Il te faut jongler par exemple pour envoyer le texte sélectionné dans un Label, ou encore jouer avec le Width de la ListBox elle-même éventuellement selon la disposition de ton UserForm.

Bon Appétit
@+Thierry
 
Y

Yann

Guest
Merci Thierry, c'est vrai vous avez raison, j'aurai dû rester sur le même fil ...Désolé.

J'ai bien compris ton explication, comment se fait t'il que je n'ai pas de scroolbar vertical qui me permettrai de lire l'ensemble de mes données de ma list ?

Merci

Yann
 
Y

Yann

Guest
Merci beaucoup pour ton aide Thierry, je t'envoie en pièce jointe un extriat de mon fichier. La scrollbar horizontale ne s'affiche tjs pas ...

Merci encore

Yann
 

Pièces jointes

  • Classeur2.zip
    45.4 KB · Affichages: 154
  • Classeur2.zip
    45.4 KB · Affichages: 169
  • Classeur2.zip
    45.4 KB · Affichages: 177
@

@+Thierry

Guest
Salut Yann, le Forum

Aie Aie Aie, je déteste les programmes qui se lancent en WorkBooks_Open spécialement quand, en plus, il y a des appels API ! Mais bon je garde toujours la touche MAJ enfoncée... Mais franchement ce n'était pas utile pour démontrer ton problème...

Pour en revenir justement à ton problème, tu n'as qu'à utiliser la Propriété ColumnWidths et tu auras ton Horizontal ScrollBar.

Tu mets ceci dans UserForm_activate
Me.ListBox1.ColumnWidths = "5000" '<<<< Pour être sûr que tu dépasses la largeur de la ListBox !

Sinon j'ai jetté un oeil sur ton travail, c'est une peu le bazard et je te conseillerai de faire un peu plus connaissance avec du VBA basic et propre avant de te lancer dans des Copy/Paste de codes API sans en connaitre ni le sens ni la portée...

Par exemple voici ce que j'ai trouvé et c'est vraiment pas très "catholique" :

Private Sub ComboBox1_Change()
Worksheets("Act. correctives").Activate

If ComboBox1.Value = "Directeur Général" Then
ListBox1.Clear
ListBox1.AddItem ""
For i = 1 To 300
If Cells(i, 5) = "DR" And Cells(i, 12) = "" Then
ListBox1.AddItem "o " & Cells(i, 3)
ListBox1.AddItem ""
End If
Next
End If

Si tout ce sbinz est pour faire un effet "Option Button" tu devrais alors faire ceci (toujours dans UserForm_activate)

With Me.ListBox1
.ColumnWidths = "5000"
.ListStyle = fmListStyleOption
End With

et ensuite faire tout simplement ceci dans la ComboBox1_Change
If ComboBox1.Value = "Directeur Général" Then
ListBox1.Clear
For i = 1 To 300
If Cells(i, 5) = "DR" And Cells(i, 12) = "" Then
ListBox1.AddItem Cells(i, 3)
End If
Next
End If

Car le coup des AddItem "" en interligne entre chaque item, tout dépend de ce que tu as ensuite, mais c'est franchement pas très sain dans un ListBox, plutot tu élargis la Font alors...

Et pour ton Bouton Quitter, remplace ceci :
Private Sub CommandButton8_Click()
ComboBox1.Clear
ListBox1.Clear
Label6.Caption = ""
Label9.Caption = ""
UserFormRevue.Hide
End Sub

Par :
Private Sub CommandButton8_Click()
Unload Me
End Sub

Ah oui une autre petite chose, au lieu de :
ComboBox1.AddItem "Directeur Général"
ComboBox1.AddItem "Directeur Technique"
ComboBox1.AddItem "Responsable Qualité"
ComboBox1.AddItem "Responsable Bureau Technique"
ComboBox1.AddItem "Responsable PCT"
ComboBox1.AddItem "Responsable Logistique/Achats"
ComboBox1.AddItem "Responsable Maintenance en Ligne"
ComboBox1.AddItem "Responsable Maintenance en Base"
ComboBox1.AddItem "Responsable Commercial"
ComboBox1.AddItem "Responsables Site"
ComboBox1.AddItem "Responsable Outillage"
ComboBox1.Style = fmStyleDropDownList

Essaies plutot ceci :
With ComboBox1
.AddItem "Directeur Général"
.AddItem "Directeur Technique"
.AddItem "Responsable Qualité"
etc etc etc
End With


Et puis tant que j'y suis au lieu de le "sbinz" d'une centaine de lignes de codes dans ta "ComboBox1_Change" tu devrais plutôt travailler comme ceci :

Private Sub ComboBox1_Change()
Dim LastLigne As Integer
Dim WS As Worksheet
Dim Title As String

Set WS = Worksheets("Act. correctives")

LastLigne = WS.Range("C65536").End(xlUp).Row

Select Case ComboBox1.Value
Case "Directeur Général"
Title = "DR"
Case "Directeur Technique"
Title = "DT"
Case "Responsable Qualité"
Title = "RAQ"
Case "Responsable Logistique/Achats"
Title = "Resp.Log"
Case "etc etc" '<<<<<<<<< TOUS TES AUTRES TITRES
Title = "Etc etc" 'Toutes tes Autres Abréviations
'etc etc
End Select


ListBox1.Clear

For i = 1 To LastLigne
With WS
If .Cells(i, 5) = Title And .Cells(i, 12) = "" Then
ListBox1.AddItem .Cells(i, 3)
End If
End With
Next

End Sub


Voilà je pense que tu auras de meilleures bases pour ton appli si tu appliques ces quelques conseils.

Bonne Découverte du VBA et de ce Forum...

Bon Après Midi (du coup je n'ai pas déjeuné !!)
@+Thierry
 

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50