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