Sélections multiples d'une listbox

Résolu/Fermé
Toums91 - 11 mai 2011 à 09:49
 Moustic - 11 mai 2011 à 13:47
Bonjour,

Je rencontre quelques problèmes sous vba,
en effet, je souhaiterais afficher une valeur dans un textbox à partir de la multisélection faite dans la listbox1 dans mon exemple.
De plus à chaque élément de la listbox est affecté un calcul.
Quand j'éxécute la macro en mode débogage, il me renvoit Null pour la valeur de la listbox.

soit dans mon exemple :


Private Sub UserForm_Initialize()
With Me
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With
ListBox1.List() = Sheets("parametres_smartcare").Range("F12:F18").Value

Private Sub CommandButton2_Click() ':Bouton de commande utilisé pour calcul des AE du smartcare

If ListBox1.Value = Sheets("parametres_smartcare").Range("F12") Then
TextBox111.Value = NG * 5 * 1000
ElseIf ListBox1.Value = Sheets("parametres_smartcare").Range("F13") Then
TextBox111.Value = NG * 8 * 1000
ElseIf ListBox1.Value = Sheets("parametres_smartcare").Range("F14") Then
TextBox111.Value = NG * 8 * 1000
ElseIf ListBox1.Value = Sheets("parametres_smartcare").Range("F15") Then
TextBox111.Value = NG * 5 * 1000
ElseIf ListBox1.Value = Sheets("parametres_smartcare").Range("F16") Then
TextBox111.Value = NG * 3 * 1000
ElseIf ListBox1.Value = Sheets("parametres_smartcare").Range("F17") Then
TextBox111.Value = NG * 12 * 1000
ElseIf ListBox1.Value = Sheets("parametres_smartcare").Range("F18") Then
TextBox111.Value = NG * 5 * 1000
Else: TextBox111.Value = 0
End If
End Sub

Merci par avance de vos réponses.
Bonne journée.

Mathieu.

2 réponses

Profil bloqué
11 mai 2011 à 10:59
Est-ce que ça pourrait venir de ton NG ?
Je ne vois sa déclaration nulle part...
0
Bonjour,

En premier lieu, tu dois initialiser ListBox1.ListIndex

Private Sub UserForm_Initialize()
With Me
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With
ListBox1.List() = Sheets("parametres_smartcare").Range("F12:F18").Value
ListBox1.ListIndex = 0 'premier élément
End Sub

Ensuite le code serait plus clair en utilisant l'instruction Select Case plutot que les conditions If ElseIf

Private Sub CommandButton2_Click() ':Bouton de commande utilisé pour calcul des AE du smartcare
Select Case ListBox1.ListIndex
Case 0
TextBox111.Value = NG * 5 * 1000
Case 1
TextBox111.Value = NG * 8 * 1000
Case 2
TextBox111.Value = NG * 8 * 1000
Case 3
TextBox111.Value = NG * 5 * 1000
Case 4
TextBox111.Value = NG * 3 * 1000
Case 5
TextBox111.Value = NG * 12 * 1000
Case 6
TextBox111.Value = NG * 5 * 1000
'Case Else
'TextBox111.Value = 0
End Select
End Sub

La valeur affichée dans TextBox111 dépendra de NG. Si NG=0 alors la valeur affichée sera 0 quelque soit la selection.

Slt.
0