Faire une liste à partir de CheckBox

Bonjour,

Je suis débutante en Excel VBA.

Mon problème est le suivant : je dispose d'un Userform avec des CheckBox.

Ces CheckBox sont des cases à cocher pour savoir si oui on non je possède tel document.

J'aimerais donc qu'une fois avoir cocher les documents dont je dispose, et après avoir cliquer sur le bouton "Valider", ceux dont je ne dispose pas et donc pour lesquels je n'ai pas coché la case, apparaissent dans ma feuille 1 sous forme de liste afin de savoir lesquels il me manque.

Je vous joins un fichier pour exemple.

Je vous remercie par avance

7exemple.xlsm (12.89 Ko)

Bonjour,

Un essai ...

Le code compte le nombre de checkbox.

Donc, pas de modification au code, si le nombre de checkbox varie.

ric

4nesk-exemple.xlsm (28.62 Ko)

Bonjour,

Cette ligne me reviens en erreur...

capture

Bonjour,

J'ai remarqué que ton code commence à la ligne 35 .Range("A35:A" & Dlig).ClearContents de le feuille pour effacer la zone.

Ce qui me laisse croire que tu utilises ton fichier d'origine.

Est-ce que la propriété Name des Checkbox est bien CheckBox1 , 2, 3, etc. comme dans le fichier exemple que tu as soumis ?

Sinon, il faut adapter ... soient les Name des Checkbox ... soit le mot Checkbox dans la ligne

If Controls("CheckBox" & x).Value = False Then.

Il faut faire la différence entre la propriété Name et la propriété Caption.

Aussi, j'ai oublié de déclarer la variable X au début du code ...

 Option Explicit
Private Sub CommandButton1_Click()
Dim Dlig As Integer, Dlig2 As Integer, X As Byte
Dim C As MSForms.Control
Dim NC As Integer

   For Each C In Me.Controls  ' compte le nombre de checkbox
      If TypeOf C Is MSForms.CheckBox Then NC = NC + 1
   Next C

   With Worksheets("Feuil1")
      Dlig = .Cells(Rows.Count, "A").End(xlUp).Row  'dernière ligne
      If Dlig = 1 Then Dlig = 2              'si dernière ligne est 1, mettre à 2
      .Range("A2:A" & Dlig).ClearContents    'vider les anciennes données

      For X = 1 To NC                        ' boucler sur le checkbox
         If Controls("CheckBox" & X).Value = False Then
      Dlig2 = .Cells(Rows.Count, "A").End(xlUp).Row + 1  ' trouve à nouveau la dernière ligne
            .Cells(Dlig2, "A").Value = "Document " & X   ' si checkbox n'est pas coché, écrire le nom dans la feuille
         End If
      Next X
   End With
End Sub

ric

Rechercher des sujets similaires à "liste partir checkbox"