Sélections multiples d'une listbox

Résolu
Toums91 -  
 Moustic -
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. Profil bloqué
     
    Est-ce que ça pourrait venir de ton NG ?
    Je ne vois sa déclaration nulle part...
    0
  2. Moustic
     
    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