Listview avec case à cocher a trois etats

Création d'une Listview avec des cases à cocher à trois états en mode Report

Sur une UserForm :

  • Positionner une ListView,
  • Positionner une ImageList,
  • Sélectionner l'objet ImageList,
    • Aller dans ces propriétés,
    • Dans l'onglet "Par catégorie", cliquer sur "Personnalisé",
    • Cliquer sur l'onglet "Images", et ajouter les images des trois cases à cocher

Afficher le code source de votre UserForm

Créer une procédure d'initialisation

Associer votre ImageList à votre ListView en saisissant le code suivant :

Listview1.SmallIcons = ImageList1

Ne pas positionner l'option Checkbox=true
Où Listview1 est le nom de votre objet ListView et ImageList1 celui de votre objet ImageList.

Gestion d'une Listview avec des cases à cocher à trois états en mode Report

Dans la procédure ListView1_Click()

Private Sub ListView1_Click()
Dim Item As MSComctIlib.ListItem

For Each Item In ListViex1.ListItems
    If ListView1.ListItems(Item.Index).Selected Then
        'Actions à exécuter
        ListView1_ItemCheck Item
        Exit For
    End If
Next
End Sub

Et dans la procédure ListView1_ItemCheck(ByVal Item as MSComctlLib.ListItem)

Private Sub ListView1_ItemCheck(ByVal Item As MSComctIlib.ListItem)
Dim Appli As MSComctIlib.ListItem

For Each Appli In ListView1.ListItems
    If "condition1 est vraie" Then
        If "condition2 est vraie" Then
            If ListView1.ListItems(Appli.Index).SmallIcon = 2 Then
                ListView1.ListItems(Appli.Index).SmallIcon = 3
            ElseIf ListView1.ListItems(Appli.Index).SmallIcon = 3 Then
                ListView1.ListItems(Appli.Index).SmallIcon = 1
            Else
                ListView1.ListItems(Appli.Index).SmallIcon = 2
            End If
        End If
    End If
Next
End Sub

Mise à jour à l'aide d'un bouton :

Private Sub Btn_Valider_Click()
Dim Item As ListItem, Appli As ListItem

'On enregistre les postes sélectionnés
For Each Item In LV_Poste.ListItems
    If Item.Checked Then
        'On enregistre les applis sélectionnées
        For Each Appli In LV_Appli.ListItems
            If Appli.SmallIcon = 2 Then
                'Action(s) à effectuer
            ElseIf Appli.SmallIcon = 3 Then
                'Action(s) à effectuer
            End If
        Next
    End If
Next

'Remise des cases à cocher dans l'état primaire
For Each Appli In LV_Appli.ListItems
    Appli.SmallIcon = 1
Next
End Sub

Ce document intitulé « Listview avec case à cocher a trois etats » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous