Comment ne sélectionner qu'une seule case à cocher dans un groupe de cases à cocher dans Excel?
Comme le montre la capture d'écran ci-dessous, pour un groupe de cases à cocher répertoriées dans la ligne 2, lorsque vous sélectionnez ou cochez une seule case, les autres cases seront désactivées. Comment y parvenir? Le code VBA de cet article peut vous aider.
Ne cochez qu'une seule case à cocher avec le code VBA
Ne cochez qu'une seule case à cocher avec le code VBA
Vous pouvez exécuter les codes VBA ci-dessous pour sélectionner une seule case à cocher dans un groupe de cases à cocher à la fois. Veuillez faire comme suit.
1. Tout d'abord, veuillez insérer les cases à cocher selon vos besoins. Ici, vous devez insérer le Cases à cocher Contrôle ActiveX comme capture d'écran suivante:
2. Appuyez ensuite sur autre + Touches F11 simultanément pour ouvrir le Microsoft Visual Basic pour applications fenêtre.
3. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module de classe.
4. Changez le nom de la classe en ClsChk dans le (Prénom) boîte de Propriétés volet, puis copiez et collez le code VBA ci-dessous dans le Code la fenêtre. Voir la capture d'écran:
Code VBA 1: ne cochez qu'une seule case à la fois
Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub
Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Value = False
xObj.Object.Enabled = False
End If
Next
Else
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Enabled = True
End If
Next
End If
End Sub
5. Cliquez maintenant sur insérer > Module, puis copiez et collez le code VBA ci-dessous dans le Module fenêtre.
Code VBA 2: ne cochez qu'une seule case à la fois
Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
Set xSht = ActiveSheet
Set xCollection = Nothing
For Each xObj In xSht.OLEObjects
If xObj.Name Like "CheckBox**" Then
Set xChk = New ClsChk
Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
xCollection.Add xChk
End If
Next
Set xChk = Nothing
End Sub
6. appuie sur le F5 clé pour exécuter le code.
À partir de maintenant, lorsque vous cochez l'une des cases de la feuille de calcul, les autres cases à cocher seront automatiquement désactivées et vous pouvez la décocher pour activer à nouveau toutes les cases.
Notes: Si une nouvelle case à cocher est ajoutée au groupe de cases à cocher, veuillez réexécuter le code VBA pour activer à nouveau toutes les cases. La suppression de la case à cocher du groupe de cases à cocher doit également réexécuter le code.
Rarticles exaltés:
- Comment filtrer les données en fonction de la case à cocher dans Excel?
- Comment masquer la case à cocher lorsque la ligne est masquée dans Excel?
- Comment mettre en évidence une cellule ou une ligne avec une case à cocher dans Excel?
- Comment créer une liste déroulante avec plusieurs cases à cocher dans Excel?
- Comment insérer un horodateur dans une cellule si une case à cocher est cochée dans Excel?
Meilleurs outils de productivité bureautique
Améliorez vos compétences Excel avec Kutools for Excel et faites l'expérience d'une efficacité comme jamais auparavant. Kutools for Excel offre plus de 300 fonctionnalités avancées pour augmenter la productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte une interface à onglets à Office et facilite grandement votre travail
- Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
- Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
- Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!