Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Simplifier un code pour activer ou désactiver des CheckBox

NONO14

XLDnaute Impliqué
Bonjour à toutes et à tous,

Ayant remis à plat un projet, et pour suivre le bon conseil de TootFatBoys, je créé cette nouvelle discussion.
J'ai mis en place ce code qui permet de désactiver toutes les CheckBox de mon formulaire si il y en a une de cochée, hors, j'ai dix CheckBox à gérer.
Dois-je répéter ce code pour les dix ou existe t-il une manière de le simplifier pour qu'il s'applique si on clique sur une des dix CheckBox ?
Peut-être faut-il passer par un module... Je ne sais pas.
Merci par avance pour votre aide

VB:
Private Sub Chk_1_Click()
Dim ctrl As Control

'Si la CheckBox 1 est cochée
    If Chk_1.Value = True Then

'alors toutes les CheckBox sont désactivées
        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "CheckBox" Then
                ctrl.Enabled = False
            End If
        Next ctrl

'Sinon elles restent activées
    Else
        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "CheckBox" Then
                ctrl.Enabled = True
            End If
        Next ctrl
    End If
End Sub
 

NONO14

XLDnaute Impliqué
Bonjour Dudu2
Merci pour tes encouragements. J'ai remis les cadres sur mon dernier fichier. Pour moi, l'esthétique est importante lorsque je présente un travail, c'est un peu comme un plat, si il est joli et attirant, on a envi d'y gouter.
 

Staple1600

XLDnaute Barbatruc
Re

@NONO14
Sauf que moi, j'ai l'obilgation de travailler avec des formulaires, on doit intervenir le moins possible directement sur les feuilles
Ca va à l'encontre du principe KISS
Mais c'est toi qui t'obliges alors, je te laisse repartir dans tes formulaires

@Dudu2
Non Office 365, c'est la version par abonnement
Celle qui intègre de nouvelles fonctionnalités au fil des mises à jour
Voir par exemple le fil de @RACHID, et le mien dans le Salon
 

NONO14

XLDnaute Impliqué
Non ce n'est pas moi qui m'oblige, j'ai des chefs au-dessus de moi, je ne fais malheureusement pas ce que je veux. Effectivement, je suis en abonnement. Cependant, mon PC refuse la mise à jour de Windows11.
 

Dudu2

XLDnaute Barbatruc
Histoire de prolonger cette discussion amicale au bistrot d'XLD, je reviens sur la classe de @vgendron et j'ai 2 remarques:
  1. La propriété de la classe Public usf As Object ne sert à mon avis à rien et peut être supprimée (et donc aussi Set usf = uf)

  2. Je me demande aussi pourquoi ctrl.GroupName = "".
    Ça dézingue le GroupName natif de la CheckBox.
    Alors oui, toutes ont le même GroupName = "" et donc ça fonctionne, mais originellement @NONO14 a mis GroupName = "1"
Puis-je proposer ce code (Edit: légèrement modifié) pour la classe cCheckBox ?
VB:
Public WithEvents ChkBoxChoix As msforms.CheckBox 'pour les checkbox

Dim clchk() As New cCheckBox

'Fonction qui parcourt les ctrls du USF et s'il s'agit d'un checkbox, affecte les méthodes et propriétés définies dans cette classe
Function initiateChk(uf)
    For Each ctrl In uf.Controls
        If TypeOf ctrl Is msforms.CheckBox Then
            If Not Len(ctrl.GroupName) = 0 Then
                i = i + 1: ReDim Preserve clchk(1 To i): Set clchk(i).ChkBoxChoix = ctrl
            End If
        End If
    Next ctrl
End Function

Private Sub ChkBoxChoix_click()
    CheckBoxExclusive
End Sub
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Tu dis :
Merci beaucoup pour ton exemple très intéressant. Cependant, dans mon cas, la saisie doit être automatique lors du clic, on récupère l'heure système, il n'est pas question de saisie.

La vidéo #72 (que j'ai d'ailleurs supprimée)
Était plus pour le traitement des dates que la saisie, c'était pour utiliser un exemple.
Tu ne m'as pas dit , lorsque tu cliques sur une des dates (OptionButton ou autre , moi c'était des commandButton !) c'est pourquoi faire? Juste une sélection ?
Question :
La personne doit donc venir plusieurs fois sur l'ordi pour pointer ?
A chaque débuts et Fins de périodes travaillées ?
Peux tu m'expliquer?
Bonne journée
Jean marie
 
Dernière édition:

NONO14

XLDnaute Impliqué
Maintenant il n'y a plus que 2 boutons, entrée et sortie. L'agent doit pointer à chaque arrivée et à chaque départ. Il clique sur un des 2 boutons et l'heure système est prise en compte. Si besoin je peux remettre mon classeur.
 

Discussions similaires

Réponses
3
Affichages
203
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…