Boucle checkbox

ludosipm

XLDnaute Nouveau
Bonjour,

Je débute en VBA et bloque rapidement.
Voici mon problème :

J'ai plusieurs checkbox dans un UserForm. Je souhaite copier les Caption des Checkbox cochées, puis les coller à la suite dans une feuille.

J'ai essayé ceci mais ça ne marche pas correctement :

Sheets("Feuille1").Select
Range("a1").Select

Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Activate
Loop

If CheckBox1.Value = True Then

ActiveCell.Offset(1, 0) = UserForm.CheckBox1.Caption

End If

If CheckBox2.Value = True Then

ActiveCell.Offset(1, 0) = UserForm.CheckBox2.Caption

End If

ActiveCell.Select






Merci d'avance
 

Creepy

XLDnaute Accro
Re : Boucle checkbox

Bonjour le Forum, Ludosipm,

Créez un userform avec des textbox + un bouton. Coche des textbox au hasard.

Mets ce code dans le bouton :

Code:
Private Sub CommandButton1_Click()
Dim Ctrl As Control

For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.CheckBox And Ctrl.Value = True Then
        MsgBox Ctrl.Caption
    End If
Next Ctrl

End Sub

Et voila, on teste tous les contrôles du userform et si c'est une checkbox + cochée alors on affiche sa caption.

A toi d'adapter.

Creepy
 

ludosipm

XLDnaute Nouveau
Re : Boucle checkbox

Merci Creepy d'avoir répondu si vite !

J'ai essayé ta méthode mais j'ai le message d'erreur suivant : "Propriété ou méthode non gérée par cet objet" en désignant cette ligne :

If TypeOf Ctrl Is MSForms.CheckBox And Ctrl.Value = True Then
 

Pierrot93

XLDnaute Barbatruc
Re : Boucle checkbox

Re,

en fonction des types de contrôles présents sur ton usf, faire le test en 2 temps :
Code:
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.CheckBox Then
        If Ctrl.Object.Value = "" Then MsgBox "ok"
    End If
Next Ctrl
 

Pierrot93

XLDnaute Barbatruc
Re : Boucle checkbox

Bonjour,

peut être comme ceci :
Code:
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.CheckBox Then
        If Ctrl.Object.Value = True Then
            Sheets("Feuil1").Range("A65536").End(xlUp)(2).Value = Ctrl.Object.Caption
        End If
    End If
Next Ctrl

bonne journée
@+
 

Statistiques des forums

Discussions
312 492
Messages
2 088 926
Membres
103 984
dernier inscrit
maliko67