Note: The other languages of the website are Google-translated. Back to English

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 (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:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement 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!
bas de cabine
Commentaires (14)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Salut! Merci pour ce guide utile! J'ai une question supplémentaire : je travaille à la fois avec des colonnes et des lignes. Si une valeur de case à cocher est vraie, toutes les cases à cocher de la même ligne et de la même colonne doivent être désactivées. Comment je fais ça? Meilleur, Morten
Ce commentaire a été minimisé par le modérateur sur le site
lorsque je ferme Excel et que je rouvre le fichier, les cases à cocher cessent de fonctionner, comment puis-je résoudre ce problème ?
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Veuillez enregistrer le classeur en tant que classeur Excel compatible avec les macros afin d'enregistrer les codes dans le classeur. Mais lorsque vous rouvrez le classeur, vous devez accéder à la fenêtre de code pour exécuter manuellement le code dans la fenêtre Module afin de l'activer.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, y a-t-il un moyen de contourner? Je voudrais l'utiliser pour plusieurs personnes, et je suis sûr qu'ils n'exécuteront pas le code après l'ouverture...
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, je suis dans la même situation. Est-il possible que le module de classe "ClsChk" se lance automatiquement au démarrage ? 
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, j'ai la même question. Existe-t-il une option pour ouvrir Excel avec la fonction qui fonctionne ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut, désolé pour le dérangement. Vous pouvez suivre les étapes ci-dessous pour résoudre le problème.1. Enregistrez le classeur en tant que Excel compatible avec les macros Cahier d'exercices (cliquez sur Déposez le > Enregistrer sous > sélectionnez un dossier de destination > sélectionnez "Cahier de travail Excel avec macro-activé"Dans le Enregistrer en tant que type de liste déroulante > Enregistrer);2. Ajoutez le code suivant dans le Ce classeur éditeur de code comme indiqué dans la capture d'écran ci-dessous.;3. Enregistrez le code. Sous classeur privé_Open()
On Error Resume Next
ClsChk_Init
End Sub

Private Sub Workbook_SheetActivate (ByVal Sh As Object)
On Error Resume Next
ClsChk_Init
End Sub

Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
ClsChk_Init
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
salut,
l'erreur apparaît sous le premier code.
xObj.Object.Value=Faux
Ce commentaire a été minimisé par le modérateur sur le site
Salut Arnold, avez-vous reçu une boîte de dialogue? et quelle version d'Excel utilisez-vous ?
Ce commentaire a été minimisé par le modérateur sur le site
Cela fonctionne bien si vous n'utilisez que des cases à cocher.
Si vous ajoutez d'autres éléments ActiveX et leur attribuez des contrôles, cela génère l'erreur mentionnée par Arnold.
Ce commentaire a été minimisé par le modérateur sur le site
Vous avez vraiment besoin d'expliquer comment accéder au nom de la classe afin de le changer. BTW les gens, c'est F4 pour ouvrir la fenêtre sur le côté gauche de l'écran, puis modifier le nom de la classe.
Ce commentaire a été minimisé par le modérateur sur le site
Je veux obtenir cette fonctionnalité ligne par ligne et non sur une feuille entière. Comment dois-je corriger un peu ce code ? Je ne suis pas trop familier avec vba. Si vous le pouvez, aidez-moi s'il vous plaît.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Min Ko Ko,
Si vous souhaitez sélectionner une seule option ligne par ligne, je vous recommande d'utiliser la combinaison du bouton d'option (contrôle de formulaire) et de la zone de groupe (contrôle de formulaire).
1. Dessinez simplement une zone de groupe dans la feuille de calcul.
2. Gardez la zone de groupe sélectionnée, puis dessinez des boutons d'option à l'intérieur de la zone.
3. Répétez les étapes pour insérer une nouvelle zone de groupe et des boutons d'option dans une nouvelle ligne.
4. Comme la zone de groupe a un titre et des bordures, vous pouvez appliquer le code VBA ci-dessous dans la fenêtre Code du module pour masquer tous les titres et bordures des zones de groupe dans la feuille de calcul en cours.
Sous BasculerVisible()
Dim myGB comme GroupBox
Pour chaque myGB dans ActiveSheet.GroupBoxes
myGB.Visible = Faux
Suivant monGB
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, Merci pour ce tuto tout fonctionne. Cependant, je suis obligé d'éxécuter manuellement le "ClsChk" à chaque fois pour que cela fonctionne, mon fichier est un fichier groupe pour la société, serait-il possible qu'il se lance automatiquement ? Merci d'avance.
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés