Sélections multiples d'une listbox

Résolu
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

  1. Est-ce que ça pourrait venir de ton NG ?
    Je ne vois sa déclaration nulle part...
    1. 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.