XL 2016 VBA - Vérifier qu'au moins une case est cochée dans une listbox

Remteyss

XLDnaute Junior
Bonjour le forum,

J'ai une macro qui, lorsque je sélectionne un fichier F, ouvre un userform ou apparaît une listbox contenant l'ensemble des titres de mon tableau sous forme de cases à cocher.
Cependant, avant de passer à l'étape suivante, je souhaite que mon code vérifie qu'au moins une case est cochée. J'ai cherché sur pas mal de sites mais n'ai pas trouvé de réponse.
J'utilise une alternative pour le moment :

VB:
Sub maprocedure
    Dim CounterCheckBox As Integer, i As Integer
  
    CounterCheckbox = 0
    With LB_CheckBox
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
                CounterCheckbox = CounterCheckbox + 1
            End If
        Next
    End With
    If CounterCheckbox = 0 Then
        MsgBox "Aucune case n'a été cochée."
        Exit Sub
    End If
End Sub

Cela fonctionne comme je le souhaite mais existe-t-il une fonction VBA permettant de simplifier mon code en une ligne ? De la même manière qu'en interrogeant un range que l'on définit avec .Find (If not monrange is nothing then...) par exemple ?

En vous remerciant :)
 

fanch55

XLDnaute Barbatruc
Bonsoir,
Malheureusement avec une listbox multiselect, votre code ne peut être simplifié .
Si vous tenez vraiment à une fonction d'une ligne, il faut faire votre propre fonction en sortant le bloc with/End With, ce qui ne vous apportera pas grand chose :rolleyes:
Peut-être un petit exit For ( voire même dans ce cas un exit sub un peu malpropre je l'avoue) pour ne pas boucler inutilement si vous ne vous vous servez pas vraiment de CounterCheckBox ...
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour Remteyss
Bonjour fanch55 ,le Forum
peut être avec un truc du genre
VB:
MsgBox = IIf(LB_CheckBox.ListIndex = -1, "false", "true")
Edit :
apparemment pas en Multiselect
jean marie
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
191

Statistiques des forums

Discussions
312 079
Messages
2 085 131
Membres
102 789
dernier inscrit
raoul6768