zeltron
XLDnaute Occasionnel
Bonjour à tout le forum,
J'ai plusieurs groupe de CheckBox sur feuille excel; Tout ces CheckBox ont un nom différent au sein d'un groupe, et entre les différents groupe ils sont également différent nom mais seulement par le chiffre en fin de nom
Exemple pour le 1er Groupe de CheckBox:
ChBxL1 ; ChBxL_Ma1 ; ChBxMa1 ; ChBxMa_Me1 ect...
Pour le 2eme Groupe de CheckBox:
ChBxL2 ; ChBxL_Ma2 ; ChBxMa2 ; ChBxMa_Me2 ect...
Ce que je fait est la chose suivante: quand je coche un CheckBox dans un groupe, par exemple le CheckBox "ChBxL2" je souhaite que certaine CheckBox du même groupe , en l'occurence "ChBxD_L2" et "ChBxL_Ma2" ont leur valeur qui passe à "False" et que dans les autres groupes les cHeckBox ayant le même nom (sauf le chiffre de la fin de nom) donc en l'occurence ChBxL1 ; ChBxL3 ;ChBxL4; ChBxL5;ChBxL6;ChBxL7 aient leur propriété "value" et "enabled" à false tout comme les CheckBox "ChBxD_L*(+chiffre du groupe)" et "ChBxL_Ma*(+chiffre du groupe)" de ces même groupes.
J'ai donc écrit le code suivant qui fonctionne:
Private Sub ChBxL2_Click()
If ChBxL2.Value = True Then
Range("A1").Value = ChBxL2.Name 'permet de savoir quel CheckBox a été coché
Range("A2").Value = 2 'permet de savoir quel groupe de checkBoxx est concerné
ChBxD_L2.Value = False
ChBxL_Ma2.Value = False
ChBxL1.Value = False
ChBxL3.Value = False
ChBxL4.Value = False
ChBxL5.Value = False
ChBxL6.Value = False
ChBxL7.Value = False
ChBxL1.Enabled = False
ChBxL3.Enabled = False
ChBxL4.Enabled = False
ChBxL5.Enabled = False
ChBxL6.Enabled = False
ChBxL7.Enabled = False
ChBxL_Ma1.Value = False
ChBxL_Ma3.Value = False
ChBxL_Ma4.Value = False
ChBxL_Ma5.Value = False
ChBxL_Ma6.Value = False
ChBxL_Ma7.Value = False
ChBxL_Ma1.Enabled = False
ChBxL_Ma3.Enabled = False
ChBxL_Ma4.Enabled = False
ChBxL_Ma5.Enabled = False
ChBxL_Ma6.Enabled = False
ChBxL_Ma7.Enabled = False
ChBxD_L1.Value = False
ChBxD_L3.Value = False
ChBxD_L4.Value = False
ChBxD_L5.Value = False
ChBxD_L6.Value = False
ChBxD_L7.Value = False
ChBxD_L1.Enabled = False
ChBxD_L3.Enabled = False
ChBxD_L4.Enabled = False
ChBxD_L5.Enabled = False
ChBxD_L6.Enabled = False
ChBxD_L7.Enabled = False
End If
End Sub
Ce que je souhaite c'est simplifier ce code.
De quelle manière puis-je dire:
Passer tous les cHeckBox "ChBxL*" sauf celui dont le nom est en A1, à "value=false" et "enabled=false"
Passer tous les cHeckBox ChBxD_L* et ChBxL_Ma* à "value=false" et "enabled=false" sauf ceux dont le nom se termine par le chiffre qui se trouve en A2 qu'il faut juste passer en value=false
Je pense que mon code est simplifiable mais je ne vois pas comment commencer.
Pouvez vous m'aider?
Vous en remerciant par avance
Cordialement
Zeltron
J'ai plusieurs groupe de CheckBox sur feuille excel; Tout ces CheckBox ont un nom différent au sein d'un groupe, et entre les différents groupe ils sont également différent nom mais seulement par le chiffre en fin de nom
Exemple pour le 1er Groupe de CheckBox:
ChBxL1 ; ChBxL_Ma1 ; ChBxMa1 ; ChBxMa_Me1 ect...
Pour le 2eme Groupe de CheckBox:
ChBxL2 ; ChBxL_Ma2 ; ChBxMa2 ; ChBxMa_Me2 ect...
Ce que je fait est la chose suivante: quand je coche un CheckBox dans un groupe, par exemple le CheckBox "ChBxL2" je souhaite que certaine CheckBox du même groupe , en l'occurence "ChBxD_L2" et "ChBxL_Ma2" ont leur valeur qui passe à "False" et que dans les autres groupes les cHeckBox ayant le même nom (sauf le chiffre de la fin de nom) donc en l'occurence ChBxL1 ; ChBxL3 ;ChBxL4; ChBxL5;ChBxL6;ChBxL7 aient leur propriété "value" et "enabled" à false tout comme les CheckBox "ChBxD_L*(+chiffre du groupe)" et "ChBxL_Ma*(+chiffre du groupe)" de ces même groupes.
J'ai donc écrit le code suivant qui fonctionne:
Private Sub ChBxL2_Click()
If ChBxL2.Value = True Then
Range("A1").Value = ChBxL2.Name 'permet de savoir quel CheckBox a été coché
Range("A2").Value = 2 'permet de savoir quel groupe de checkBoxx est concerné
ChBxD_L2.Value = False
ChBxL_Ma2.Value = False
ChBxL1.Value = False
ChBxL3.Value = False
ChBxL4.Value = False
ChBxL5.Value = False
ChBxL6.Value = False
ChBxL7.Value = False
ChBxL1.Enabled = False
ChBxL3.Enabled = False
ChBxL4.Enabled = False
ChBxL5.Enabled = False
ChBxL6.Enabled = False
ChBxL7.Enabled = False
ChBxL_Ma1.Value = False
ChBxL_Ma3.Value = False
ChBxL_Ma4.Value = False
ChBxL_Ma5.Value = False
ChBxL_Ma6.Value = False
ChBxL_Ma7.Value = False
ChBxL_Ma1.Enabled = False
ChBxL_Ma3.Enabled = False
ChBxL_Ma4.Enabled = False
ChBxL_Ma5.Enabled = False
ChBxL_Ma6.Enabled = False
ChBxL_Ma7.Enabled = False
ChBxD_L1.Value = False
ChBxD_L3.Value = False
ChBxD_L4.Value = False
ChBxD_L5.Value = False
ChBxD_L6.Value = False
ChBxD_L7.Value = False
ChBxD_L1.Enabled = False
ChBxD_L3.Enabled = False
ChBxD_L4.Enabled = False
ChBxD_L5.Enabled = False
ChBxD_L6.Enabled = False
ChBxD_L7.Enabled = False
End If
End Sub
Ce que je souhaite c'est simplifier ce code.
De quelle manière puis-je dire:
Passer tous les cHeckBox "ChBxL*" sauf celui dont le nom est en A1, à "value=false" et "enabled=false"
Passer tous les cHeckBox ChBxD_L* et ChBxL_Ma* à "value=false" et "enabled=false" sauf ceux dont le nom se termine par le chiffre qui se trouve en A2 qu'il faut juste passer en value=false
Je pense que mon code est simplifiable mais je ne vois pas comment commencer.
Pouvez vous m'aider?
Vous en remerciant par avance
Cordialement
Zeltron