Comment autoriser la sélection d’une seule case à cocher dans un groupe sous Excel ?
Dans certaines applications Excel, il peut être utile de permettre aux utilisateurs de sélectionner une seule option parmi un groupe de cases à cocher, reproduisant ainsi le comportement des boutons radio. Par exemple, comme illustré dans la capture d’écran ci-dessous, lorsqu’une case à cocher de la ligne 2 est cochée, toutes les autres cases du groupe sont immédiatement désactivées, garantissant qu’un seul choix soit possible à tout moment. Cette restriction s’avère particulièrement précieuse dans les formulaires de sondage, les listes à réponse unique ou les tableaux de bord où les réponses multiples doivent être évitées. Pour obtenir cette fonctionnalité directement dans Excel, des techniques spécifiques sont nécessaires, notamment l’utilisation de code VBA. Cet article propose des solutions concrètes pour activer un effet de « sélection unique » avec des cases à cocher dans Excel, accompagnées d’instructions détaillées et de considérations essentielles pour une mise en œuvre efficace.

Permettre la sélection d’une seule case à cocher à l’aide d’un code VBA
Vous pouvez utiliser l’approche VBA suivante pour garantir qu’une seule case à cocher d’un groupe soit sélectionnée à la fois. Cette solution est particulièrement adaptée lorsque vous recherchez une expérience fluide et entièrement automatique, notamment dans des modèles complexes ou lorsque la logique d’activation et de désactivation est essentielle.
1. Commencez par insérer les cases à cocher là où vous souhaitez appliquer la règle de sélection unique. Pour cette solution, vous devez impérativement utiliser des cases à cocher de type Contrôle ActiveX, car les cases à cocher de type Contrôle de formulaire ne prennent pas en charge directement le mécanisme d’activation/désactivation. Pour insérer des cases à cocher ActiveX, accédez à l’onglet Développeur > Insérer > Contrôles ActiveX > Case à cocher. Disposez ensuite toutes les cases à cocher de votre groupe comme illustré ci-dessous :

2. Appuyez simultanément sur Alt + F11 pour ouvrir la fenêtre Microsoft Visual Basic pour Applications.
3. Dans la fenêtre de l’éditeur, cliquez sur Insertion > Module de classe. Cette étape crée un nouveau module de classe, indispensable pour gérer les événements de plusieurs cases à cocher. Grâce à un module de classe, vous pouvez réagir individuellement au clic sur chaque case à cocher, quel que soit leur nombre.

4. Localisez le nouveau module de classe dans le volet Propriétés (généralement à gauche), cliquez dessus, puis renommez-le dans la zone Nom en remplaçant la valeur par défaut (par exemple, Classe1) par ClsChk. Ensuite, copiez-collez le code suivant dans la fenêtre de code de ce module de classe. Reportez-vous à la capture d’écran à titre indicatif :

Code VBA 1 : autoriser la sélection d’une seule case à cocher à 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 ensuite sur Insertion > Module pour ajouter un module de code standard. Copiez-collez le code suivant dans la fenêtre du module. Ce code initialisera et « reliera » toutes vos cases à cocher au gestionnaire d’événements défini précédemment :
Code VBA 2 : autoriser la sélection d’une seule case à cocher à 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. Appuyez sur F5 pour exécuter le code, ce qui active la logique de sélection unique pour votre groupe de cases à cocher. Testez ce comportement en cochant l’une des cases : toutes les autres doivent immédiatement se décocher et être désactivées. Dès que vous décochez votre sélection actuelle, toutes les cases à cocher sont réactivées, vous permettant ainsi d’effectuer un nouveau choix.

Remarque : Si vous ajoutez ou supprimez des cases à cocher dans votre groupe, vous devrez réexécuter le code VBA d’initialisation. En effet, les gestionnaires d’événements sont mis à jour à chaque exécution du code, garantissant ainsi que toute modification apportée au groupe de contrôles soit correctement prise en compte par votre macro VBA.
Les atouts de cette méthode résident dans son automatisation totale : les utilisateurs ne peuvent pas choisir plusieurs options par inadvertance. Toutefois, elle ne fonctionne qu’avec les contrôles ActiveX, dont la disponibilité dépend de la version d’Excel utilisée, et exige que les macros soient activées. En outre, partager des classeurs intégrant des contrôles ActiveX ou des macros avec d’autres utilisateurs peut nécessiter des autorisations de sécurité supplémentaires.
Articles associés:
- Comment filtrer des données en fonction d’une case à cocher dans Excel ?
- Comment masquer une case à cocher lorsqu’on masque la ligne correspondante dans Excel ?
- Comment mettre en surbrillance une cellule ou une ligne à l’aide d’une case à cocher dans Excel ?
- Comment créer une liste déroulante avec plusieurs cases à cocher dans Excel ?
- Comment insérer automatiquement la date sous forme de tampon horodaté dans une cellule lorsqu’une case à cocher est cochée dans Excel ?
Meilleurs outils de productivité Office
Boostez vos compétences Excel avec Kutools pour Excel et découvrez une efficacité inégalée.Kutools pour Excel propose plus de 300 fonctionnalités avancées pour améliorer votre 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 rend votre travail bien plus facile
- Activez 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 vous fait économiser des centaines de clics de souris chaque jour !
Tous les compléments Kutools. Un seul installateur
Kutools for Office regroupe les compléments pour Excel, Word, Outlook et PowerPoint, ainsi que Office Tab Pro, ce qui en fait le choix idéal pour les équipes travaillant à travers les applications Office.
- Suite tout-en-un— Compléments Excel, Word, Outlook et PowerPoint + Office Tab Pro
- Un seul installateur, une seule licence— installation en quelques minutes (compatible MSI)
- Fonctionne mieux ensemble— productivité optimisée dans toutes les applications Office
- Essai gratuit de 30 jours avec toutes les fonctionnalités— aucune inscription, aucune carte bancaire
- Meilleur rapport qualité-prix— économisez par rapport à l’achat de compléments individuels