1 pièce(s) jointe(s)
VBA Compter le nombre de .Selected ListBox selectionnées
Bonjour,
Je voudrais compter le nombre d'éléments d'une multifonction d'une ListBox, mais je n'y arrive pas
Ci joint mon code et en rouge ou je bloque : (bien sur j'ai raccourcie le code) [le nom de ma ListBox est Selection_Taches]
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Private Sub Ok_Click()
Dim lItem As Long
For lItem = 0 To Selection_Taches.ListCount - 1
If Selection_Taches.Selected(lItem) = True Then
MsgBox "Information saisie : " & vbLf & vbLf _
& "Personne : " & Personnes & vbLf _
& "Vous avez passé : " & Heures & " heure à faire : " & Selection_Taches.ListIndex & " tâche(s)" & vbLf & vbLf _
& "Soit : " & (Format(Replace(Heures, ".", ","), " 0.00") / Selection_Taches.ListIndex.Selected(lItem) & vbLf _
& "Pour faire : " & Selection_Taches.List(lItem) _
, vbInformation, "Information"
Selection_Taches.Selected(lItem) = False
End If
Next
Unload Me
End Sub |
J'ai recherché sur Google mais la solution que je trouve c'est compter la totalité de ma liste, alors que je voudrais seulement ce que j'ai sélectionnée.
car je m'en sert en suite pour faire un prorata des mes heures saisies.
Ce qui donnerai : Pièce jointe 185776
(On voit bien derrière que j'ai sélectionné que 4 éléments pour 4 heures)
Merci de votre aide. Bien Cdt
VBA Compter le nombre de .Selected ListBox selectionnées
C'est pas tout a fait ça. Je donne le code entier comme ça se sera peut être mieux.
Car en faite ça doit faire une boucle pour ajouter chaque(s) sélection(s) dans une colonne.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Private Sub Ok_Click()
If Personnes.ListIndex = -1 Then
MsgBox "Aucune personne n'est selecitionée !", vbCritical
Exit Sub
End If
If Selection_Taches.ListIndex = 0 Then
MsgBox ("Aucunes n'est tâche(s) selectionnée(s) !"), vbCritical
Exit Sub
End If
If Heures.Value = "" Then
MsgBox ("Vous n'avez mis aucun temps passé !"), vbCritical
Exit Sub
End If
Call Fichier_Taches
Windows("planning taches mensuelles - " & Personnes & ".xlsx").Activate
Application.WindowState = xlMinimized
Dim lItem As Long
For lItem = 0 To Selection_Taches.ListCount - 1
If Selection_Taches.Selected(lItem) = True Then
MsgBox "Information saisie : " & vbLf & vbLf _
& "Personne : " & Personnes & vbLf _
& "Vous avez passé : " & Heures & " heure à faire : " & Selection_Taches.ListIndex.Selected(lItem) & " tâche(s)" & vbLf & vbLf _
& "Soit : " & (Format(Replace(Heures, ".", ","), " 0.00") / Selection_Taches.ListIndex) & vbLf _
& "Pour faire : " & Selection_Taches.List(lItem) _
, vbInformation, "Information"
Sheets("Tâches").Range("A65536").End(xlUp).Offset(1, 0).FormulaR1C1 = Format(Date, "mmm")
Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 1).FormulaR1C1 = Format(Date, "mm/dd/yyyy")
Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 2).FormulaR1C1 = Selection_Taches.List(lItem)
Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 3).FormulaR1C1 = (Format(Heures, " 0.00") / Selection_Taches.ListIndex)
Selection_Taches.Selected(lItem) = False
End If
Next
Windows("planning taches mensuelles - " & Personnes & ".xlsx").Activate
Application.WindowState = xlMinimized
ActiveWorkbook.Save
ActiveWindow.Close
MsgBox "Merci " & Personnes & vbLf & " données saisie !", vbInformation, "Confirmation"
Unload Me
End Sub |
En gros ça donne le nom de la sélection + le temps passé /divisé par le nombre de sélection(s)
Exemple : (2 sélections pour 1 heures) Résultat :
- Traitement courrier 0,50
- Mise sous pli 0,50
VBA Compter le nombre de .Selected ListBox selectionnées
C'est bon grâce à ton code j'ai pu l'adapter au miens en faisant une boucle après ton code :
Et ça fonctionne parfaitement. :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Private Sub Ok_Click()
Dim l As Long
Dim Compteur As Long
For l = 0 To Selection_Taches.ListCount - 1
If Selection_Taches.Selected(l) = True Then Compteur = Compteur + 1
Next l
Dim lItem As Long
For lItem = 0 To Selection_Taches.ListCount - 1
If Selection_Taches.Selected(lItem) = True Then
MsgBox "Information saisie : " & vbLf & vbLf _
& "Personne : " & Personnes & vbLf _
& "Vous avez passé : " & Heures & " heure à faire : " & Compteur & " tâche(s)" & vbLf & vbLf _
& "Soit : " & (Format(Replace(Heures, ".", ","), " 0.00") / Compteur) & " heure(s)" & vbLf _
& "Pour faire : " & Selection_Taches.List(lItem) _
, vbInformation, "Information"
Sheets("Tâches").Range("A65536").End(xlUp).Offset(1, 0).FormulaR1C1 = Format(Date, "mmm")
Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 1).FormulaR1C1 = Format(Date, "mm/dd/yyyy")
Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 2).FormulaR1C1 = Selection_Taches.List(lItem)
Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 3).FormulaR1C1 = (Format(Replace(Heures, ".", ","), " 0.00") / Compteur)
Selection_Taches.Selected(lItem) = False
End If
Next
Unload Me
End Sub |