checkbox multiple

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #23759951
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
MichD
Le #23760041
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
--------------------------------------------
Le #23760091
Merci beaucoup pour cette exemple et ces explications.

"MichD" 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
--------------------------------------------


Publicité
Poster une réponse
Anonyme