Sélections multiples d'une listbox
Résolu
Toums91
-
Moustic -
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.
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.
A voir également:
- Sélections multiples d'une listbox
- Choix multiples excel - Guide
- Affichage écrans multiples - Guide
- Excel imprimer une selection - Guide
- Des passerelles par défaut multiples sont destinées à fournir la redondance - Forum Réseau
- Cette action ne fonctionne pas sur plusieurs sélections ✓ - Forum Programmation
2 réponses
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.
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.