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

  • Initiateur de la discussion Initiateur de la discussion NONO14
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
Bonsoir

@NONO14
J'arrive surement après la bataille
Je n'ai lu que le code VBA de ton premier message
En le modifiant comme ci-dessous
VB:
Private Sub Chk_1_Click()
Dim ctrl As Control
        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "CheckBox" Then
            If Not ctrl.Name Like "Chk_1" Then
                ctrl.Enabled = Chk_1.Value
            End If
            End If
        Next ctrl
End Sub
On obtient ce tu souhaites, non ?
NONO14 à dit:
ce code qui permet de désactiver toutes les CheckBox de mon formulaire si il y en a une de cochée
 
Re
ce que j'ai mis pour que ça fonctionne Lol
VB:
Private Sub Cmb_Valider_Click()
'Vérifier chaque case à cocher et exécuter une action spécifique
                 Indx = QuelChkBx '---->Ici
                   Unload Me
    Select Case Indx'---->Ici
    Case 1
'        Unload Me
        UfGestTemps.Show (0)           
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = True
            .MultiPage1.Pages(1).Enabled = False
            .MultiPage1.Pages(2).Enabled = False
            .MultiPage1.Pages(0).Txt_Nom.SetFocus
            .Cbx_Salarié.Visible = False
            .Label1.Visible = False
        End With   
    Case 2
'        Unload Me
        UfGestTemps.Show (0)           
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = False
            .MultiPage1.Pages(1).Enabled = True
            .MultiPage1.Pages(2).Enabled = False
            .Cbx_Salarié.SetFocus
        End With
    Case 3
'        Unload Me
        UfGestTemps.Show (0)           
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = True
            .MultiPage1.Pages(1).Enabled = False
            .MultiPage1.Pages(2).Enabled = False
            .Cbx_Salarié.SetFocus
        End With  
    Case 4
'        Unload Me
        UfPointage.Show (0)
        With UfPointage
            .Txt_Noms.Enabled = False
            .Txt_Code.SetFocus
        End With    
    Case 5
'        Unload Me
        UfGestTemps.Show (0)
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = False
            .MultiPage1.Pages(1).Enabled = True
            .MultiPage1.Pages(2).Enabled = False
            .Cbx_Salarié.SetFocus
        End With   
    Case 6
'        Unload Me
        Sheets("Liste_agents").Activate
        DeProtege ("Liste_agents")   
    Case 7
'        Unload Me
        UfGestTemps.Show (0)
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = False
            .MultiPage1.Pages(1).Enabled = False
            .MultiPage1.Pages(2).Enabled = True
            .Cbx_Salarié.SetFocus
        End With 
    Case 8
'        Unload Me
        CopierColler       
    Case 9
'        Unload Me
        SauvegarderPointages   
    Case Else
        Exit Sub
    End Select   
End Sub
Public Function QuelChkBx() As Byte '---->Ici
    For i = 1 To 9
        If UfMenusAdmin.Controls("CheckBox" & i) Then
            QuelChkBx = i
            Exit For
        End If
    Next i
End Function
Jean marie
 
Dernière édition:
Bonsoir

@NONO14
J'arrive surement après la bataille
Je n'ai lu que le code VBA de ton premier message
En le modifiant comme ci-dessous
VB:
Private Sub Chk_1_Click()
Dim ctrl As Control
        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "CheckBox" Then
            If Not ctrl.Name Like "Chk_1" Then
                ctrl.Enabled = Chk_1.Value
            End If
            End If
        Next ctrl
End Sub
On obtient ce tu souhaites, non ?
Bonjour Staple1600,
Merci pour ton code, mais la solution m'a déjà était proposée. Cependant, je le garde sous le coude car il y a d'autres projets dans les tiroirs.
 
Re
ce que j'ai mis pour que ça fonctionne Lol
VB:
Private Sub Cmb_Valider_Click()
'Vérifier chaque case à cocher et exécuter une action spécifique
                 Indx = QuelChkBx '---->Ici
                   Unload Me
    Select Case Indx'---->Ici
    Case 1
'        Unload Me
        UfGestTemps.Show (0)          
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = True
            .MultiPage1.Pages(1).Enabled = False
            .MultiPage1.Pages(2).Enabled = False
            .MultiPage1.Pages(0).Txt_Nom.SetFocus
            .Cbx_Salarié.Visible = False
            .Label1.Visible = False
        End With  
    Case 2
'        Unload Me
        UfGestTemps.Show (0)          
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = False
            .MultiPage1.Pages(1).Enabled = True
            .MultiPage1.Pages(2).Enabled = False
            .Cbx_Salarié.SetFocus
        End With
    Case 3
'        Unload Me
        UfGestTemps.Show (0)          
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = True
            .MultiPage1.Pages(1).Enabled = False
            .MultiPage1.Pages(2).Enabled = False
            .Cbx_Salarié.SetFocus
        End With 
    Case 4
'        Unload Me
        UfPointage.Show (0)
        With UfPointage
            .Txt_Noms.Enabled = False
            .Txt_Code.SetFocus
        End With   
    Case 5
'        Unload Me
        UfGestTemps.Show (0)
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = False
            .MultiPage1.Pages(1).Enabled = True
            .MultiPage1.Pages(2).Enabled = False
            .Cbx_Salarié.SetFocus
        End With  
    Case 6
'        Unload Me
        Sheets("Liste_agents").Activate
        DeProtege ("Liste_agents")  
    Case 7
'        Unload Me
        UfGestTemps.Show (0)
        With UfGestTemps
            .MultiPage1.Pages(0).Enabled = False
            .MultiPage1.Pages(1).Enabled = False
            .MultiPage1.Pages(2).Enabled = True
            .Cbx_Salarié.SetFocus
        End With
    Case 8
'        Unload Me
        CopierColler      
    Case 9
'        Unload Me
        SauvegarderPointages  
    Case Else
        Exit Sub
    End Select  
End Sub
Public Function QuelChkBx() As Byte '---->Ici
    For i = 1 To 9
        If UfMenusAdmin.Controls("CheckBox" & i) Then
            QuelChkBx = i
            Exit For
        End If
    Next i
End Function
Jean marie
Bonjour jean marie
Merci beaucoup, ça fonctionne. Je vais maintenant m'atteler à la suite.
 
Bonjour le Fil
Ou trouves tu la variable ?

Bonne journée
Jean marie
Bonjour
il faut aller sur le bon fil...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
251
Réponses
3
Affichages
612
Réponses
0
Affichages
547
Retour