Comment cocher tous les checkbox en 1 fois d'un Listview

MARGAR

XLDnaute Junior
Bonjour le forum,

Je ne parviens pas à trouver la bonne solution afin de sélectionner toutes les cases à cocher de mon listview.
Voici le code que j'utilise :

Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
Dim Check As ListItem
Dim J As Integer
TextBoxConte = 0
For Each Check In ListView1.ListItems
If Check.Checked = True Then J = J + 1: TextBoxConte = J

Next
If J > 3 Or J < 54 Then TextBoxConte.BackColor = &H80FF80
If J < 4 Or J > 54 Or J = 7 Then TextBoxConte.BackColor = &H8080FF
End Sub


Private Sub UserForm_initialize()
Dim cel As Range
Dim i As Integer
Dim Tablo

Nbterrain = 0
Tablo = Sheets("INSCRIPTIONS").Range("J3:J" & Sheets("INSCRIPTIONS").Range("J" & Rows.Count).End(xlUp).Row)

'----- remplissage ListView------------------------
With ListView1.ColumnHeaders 'Définit le nombre de colonnes et Entêtes
.Add , , "N° jetons et INSCRIPTIONS des membres", 125
End With
i = 1
ListView1.CheckBoxes = True
For Each cel In Sheets("INSCRIPTIONS").Range("J3:J" & Sheets("INSCRIPTIONS").[j65000].End(xlUp).Row)
With ListView1.ListItems
.Add = cel
End With
ListView1.ListItems(i).Checked = False
i = i + 1
Next
ListView1.View = lvwReport 'Spécifie l'affichage en mode "Détails"
End Sub

Merci beaucoup
 

Herdet

Nous a quitté
Repose en paix
Re : Comment cocher tous les checkbox en 1 fois d'un Listview

Bonsoir tbft, le forum,

Voici, le fichier très allégé

Cordialement
margar
Bonjour,
Voici le code à affecter à 2 boutons
Code:
Sub CheckBoxes_selectionner()
   Dim j As Integer
   With ListView1
      For j = 1 To .ListItems.Count
         .ListItems(j).Checked = True
      Next
   End With
End Sub

Sub CheckBoxes_deselectionner()
   Dim j As Integer
   With ListView1
      For j = 1 To .ListItems.Count
         .ListItems(j).Checked = False
      Next
   End With
End Sub

Il faudrait aussi remplacer tous les & Chr(10) & par & vbLf&
A voir dans les constantes diverses de l'aide : vbCrLf, vbLf, vbTab,....

Cordialement
Robert
 

ChTi160

XLDnaute Barbatruc
Re : Comment cocher tous les checkbox en 1 fois d'un Listview

Bonsoir MARGAR
Bonsoir le fil,Le Forum
pas compris le pourquoi ,ni le a partir de quoi, donc une possibilité en un clic sur L’entête de colonne de la ListView
VB:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim J As Byte
Dim Check
For Each check In ListView1.ListItems
 check.Checked = True
 J = J + 1: TextBoxConte = J
Next
End Sub

Bonne soirée
 

Si...

XLDnaute Barbatruc
Re : Comment cocher tous les checkbox en 1 fois d'un Listview

salut

autre proposition avec un contrôle "Listbox" style option (ici nommé Lt)
Code:
Private Sub UserForm_initialize()
  Dim cel As Range
  Dim i As Integer
  Dim Tablo
  '************* tous ou Aucun
  Lt.List = Array("Tous", "Aucun")
  ...
End Sub

'********** Tous Aucun
  Private Sub Lt_Click()
    Dim j As Long
    For j = 1 To ListView1.ListItems.Count
       ListView1.ListItems(j).Checked = Lt.ListIndex = 0
    Next
End Sub

Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
  Dim Check As ListItem
  Dim j As Integer
  '********* vide annule la sélection
  Lt.ListIndex = -1
  ...
End Sub


bien vu ChTi160 et avec un effet bascule
Code:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim J As Byte
Dim Check
For Each Check In ListView1.ListItems
 Check.Checked = Not Check.Checked
 J = J + 1: TextBoxConte = J
Next
End Sub
 

Pièces jointes

  • COCHER ListView.xls
    249.5 KB · Affichages: 97
Dernière édition:

MARGAR

XLDnaute Junior
Re : Comment cocher tous les checkbox en 1 fois d'un Listview

Bonsoir Gerdet, chti160, le forum,

@Robert, ta solution me convient très bien
@chti160, comme la solution de Robert me convient, je te remercie aussi de t'y avoir intéressé.

Cordialement
margar
 

Herdet

Nous a quitté
Repose en paix
Re : Comment cocher tous les checkbox en 1 fois d'un Listview

MARGAR
Il y a des lignes vides dans la listview.
Il faudrait tester la valeur de cel avant de faire le .Add
Proposition de code

Code:
   '----- remplissage ListView------------------------
   With ListView1
      'Définit le nombre de colonnes et Entêtes
      .ColumnHeaders.Add , , "N° jetons et Liste des membres", 125
      .CheckBoxes = True
      For Each cel In Sheets("Liste").Range("J3:J" & Sheets("Liste").[j65000].End(xlUp).Row)
         If cel <> "" Then .ListItems.Add = cel
      Next
      .View = lvwReport 'Spécifie l'affichage en mode "Détails"
   End With
   CheckBoxes_deselectionner

Pourquoi utiliser une Listview à 1 colonne au lieu d'une simple Listbox avec une option Multiselect ?
(dans une Listbox, utiliser .Selected au lieu de .Checked)
 
Dernière édition:

Discussions similaires

Réponses
0
Affichages
148

Statistiques des forums

Discussions
312 194
Messages
2 086 068
Membres
103 110
dernier inscrit
Privé