Note: The other languages of the website are Google-translated. Back to English
Se connecter  \/ 
x
or
x
INSCRIPTION  \/ 
x

or

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ée...
  • 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 gammes...
  • 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 cellules...
  • 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 PDF...
  • 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
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Min Ko Ko · 1 years ago
    I want to get this feacture just row by row and not entire sheet.How should i fix this code alittle? I am not familiar with vba too much.If can, plz help me.
    • To post as a guest, your comment is unpublished.
      crystal · 11 months ago
      Hi Min Ko Ko,
      If you want to select only one option row by row, I recommend you to use the combination of Option Button (Form Control) and Group Box (Form Control).
      1. Just draw a Group Box in the worksheet.
      2. Keep the Group Box selected, and then draw Option Buttons inside the box.
      3. Repeat the steps to insert new Group box and Option Buttons in a new row.
      4. As the group box has title and borders, you can apply the below VBA code in the Module code window to hide all titles and borders of group boxes in current worksheet.
      Sub ToggleVisible() Dim myGB As GroupBox For Each myGB In ActiveSheet.GroupBoxes myGB.Visible = False Next myGB End Sub
  • To post as a guest, your comment is unpublished.
    Justin Keith · 1 years ago
    You really need to explain how to access the class name in order to change it. BTW folks, it's F4 to open the window on the left side of the screen and then edit the class name.
  • To post as a guest, your comment is unpublished.
    Arnold · 1 years ago
    hi,
    the error appears under the first code.
    xObj.Object.Value = False
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi Arnold, did you get any prompt box? and which Excel version are you using?
      • To post as a guest, your comment is unpublished.
        Tim · 1 years ago
        It works fine if all you are using is checkboxes.
        If you add any other activeX items and assign controls to them, it throws the error Arnold mentioned.
  • To post as a guest, your comment is unpublished.
    cass · 2 years ago
    when i close the Excel and open the file again the checkboxes stop working how do I fix this pls?
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi,
      Please save the workbook as an Excel Macro-enabled Workbook in order to save the codes in workbook. But when you reopen the workbook, you need to get into the code window to manually run the code in the Module window to activate it.
      • To post as a guest, your comment is unpublished.
        Barbara · 1 years ago
        Hi, is there a way around? I would like to use this for multiple people, and I am sure they will not run the code aftre opening....

  • To post as a guest, your comment is unpublished.
    Morten G. · 4 years ago
    Hi! Thanks for this useful guide! I have an additional question: Im working with both columns and rows. If one checkbox value is true, all checkboxes in the same row and column has to be disabled. How do I do that? Best, Morten