Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

checkbox multiple

3 réponses
Avatar
Bonjour,

J'ai un formulaire avec une 50 de checkbox.
Elles peuvent toutes recevoir le même code
sauf que le code a besoin d'intercepter la checkbox qui l'a déclenché et de
lui donner la valeur de la propriété Caption

Comment modifier le code ci-dessous pour qu'il soit adapté à recevoir
l'instruction de plusieurs checkbox

Merci d'avance

For i = 1 To 1000
k = 1
If Worksheets("SH").Range("p" & i).Value = CheckBox1.Caption Then
lig = ActiveCell.Row
col = ActiveCell.Column
Worksheets("SH").Range(ActiveCell.Address(0, 0)) = CheckBox1.Caption
nbligne = Worksheets("SH").Range("t" & i).Value
k = i
For j = 1 To nbligne ' To Worksheets("SH").Range("t" & i).Value
Worksheets("SH").Cells(lig, col + 3) =
Worksheets("SH").Range("s" & k).Value
lig = lig + 1
k = k + 1
Next
End If
Next

3 réponses

Avatar
MichD
Bonjour,

Voici un fichier exemple : http://cjoint.com/?AIopoxUgOi1 utilisant un module de classe.
Quand tu ajoutes un module par le menu insertion de la fenêtre de l'éditeur de code, tu
dois choisir "Module de classe". Tu as du code dans le formulaire, dans le module de classe
et dans le module standard.


MichD
--------------------------------------------
a écrit dans le message de groupe de discussion : 4e7089a6$0$20468$

Bonjour,

J'ai un formulaire avec une 50 de checkbox.
Elles peuvent toutes recevoir le même code
sauf que le code a besoin d'intercepter la checkbox qui l'a déclenché et de
lui donner la valeur de la propriété Caption

Comment modifier le code ci-dessous pour qu'il soit adapté à recevoir
l'instruction de plusieurs checkbox

Merci d'avance

For i = 1 To 1000
k = 1
If Worksheets("SH").Range("p" & i).Value = CheckBox1.Caption Then
lig = ActiveCell.Row
col = ActiveCell.Column
Worksheets("SH").Range(ActiveCell.Address(0, 0)) = CheckBox1.Caption
nbligne = Worksheets("SH").Range("t" & i).Value
k = i
For j = 1 To nbligne ' To Worksheets("SH").Range("t" & i).Value
Worksheets("SH").Cells(lig, col + 3) Worksheets("SH").Range("s" & k).Value
lig = lig + 1
k = k + 1
Next
End If
Next
Avatar
MichD
Un bout d'explication :

Dans le module de classe, tu as cette procédure événementielle :
'----------------------------------------
Private Sub GroupeBouton_click()

MsgBox GroupeBouton.Caption
'OU
'GroupeBouton.Caption = "Ce que tu veux"

End Sub
'----------------------------------------

L'objet GroupeBouton considère le comme étant un objet "CheckBox" lorsque tu écris ton code.
Dans ton module formulaire, tu devrais faire 50 fois la même procédure, mais dans un module
de la classe la procédure événementielle est valide pour tous les checkbox de ton formulaire et
le checkbox traité dans cet exemple et le checkbox que l'usager vient de cliquer.

Si ton application le requiert, tu pourrais utiliser d'autres procédures événementielles de
l'objet GroupeBouton dans le module de classe comme si tu étais dans le module formulaire.
Tu dois te souvenir que la procédure va s'appliquer à tous les checkbox du formulaire, voir
la procédure dans le formulaire qui englobe tous les checkbox de celui-ci :
'------------------------------------
Private Sub UserForm_Initialize()
Dim Nb As Integer, Ctrl As Control
Nb = 0
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "CheckBox" Then
Nb = Nb + 1
ReDim Preserve Bouton(1 To Nb)
Set Bouton(Nb).GroupeBouton = Ctrl
End If
Next
End Sub
'------------------------------------

Amuse-toi bien!

MichD
--------------------------------------------
Avatar
Merci beaucoup pour cette exemple et ces explications.

"MichD" a écrit dans le message de news:
j4qagf$5do$
Un bout d'explication :

Dans le module de classe, tu as cette procédure événementielle :
'----------------------------------------
Private Sub GroupeBouton_click()

MsgBox GroupeBouton.Caption
'OU
'GroupeBouton.Caption = "Ce que tu veux"

End Sub
'----------------------------------------

L'objet GroupeBouton considère le comme étant un objet "CheckBox" lorsque
tu écris ton code.
Dans ton module formulaire, tu devrais faire 50 fois la même procédure,
mais dans un module
de la classe la procédure événementielle est valide pour tous les checkbox
de ton formulaire et
le checkbox traité dans cet exemple et le checkbox que l'usager vient de
cliquer.

Si ton application le requiert, tu pourrais utiliser d'autres procédures
événementielles de
l'objet GroupeBouton dans le module de classe comme si tu étais dans le
module formulaire.
Tu dois te souvenir que la procédure va s'appliquer à tous les checkbox du
formulaire, voir
la procédure dans le formulaire qui englobe tous les checkbox de celui-ci
:
'------------------------------------
Private Sub UserForm_Initialize()
Dim Nb As Integer, Ctrl As Control
Nb = 0
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "CheckBox" Then
Nb = Nb + 1
ReDim Preserve Bouton(1 To Nb)
Set Bouton(Nb).GroupeBouton = Ctrl
End If
Next
End Sub
'------------------------------------

Amuse-toi bien!

MichD
--------------------------------------------