Empêcher la saisie de plusieurs case à cocher

Bonjour à tous,

Je m'interroge sur un point. Est-il possible (hors VBA) d'empêcher un utilisateur de cocher plusieurs case sur un formulaire d'enquête de satisfaction ?

Je sais que cela est possible avec ActiveX, mais l'est-ce avec les case à cocher insérées ?

Je remercie par avance toutes celles et ceux qui m'apporteront un élément de réponse.

Bonjour,

hors vba donc je suppose sur feuille.

Il faut utiliser des Case d'option, regroupées dans des zones de groupe pour celles s'excluant mutuellement.

47classeur1.xlsx (14.51 Ko)

Merci pour ce retour détaillé. Je m'attendais à pouvoir obtenir un résultat plus graphique toutefois :)

Plus graphique ? C'est à dire ?

Moins d'aliasing sur les contours du cercle par exemple car visuellement, cela donne un côté désuet. Quoi qu'il en soit, je vais utiliser ces cases d'option

Bonjour à tous,

Une autre manière de simuler les cases d'options sans s'embêter (et le mot est faible) avec des cases à cocher.

Le code est dans le module de feuil1. Les questions et réponses du sondage sont totalement inventées, quoique...

Nota : si on veut plus "graphique", on peut utiliser des symboles via une police de caractères spéciaux. Me le demander au cas où.

Merci mafraise !

Re,

Plus Graphique...

Bonsoir à tous !

et pour l'ergonomie je rajouterai ceci :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim grp
    For Each grp In Split(GroupesOptions)
        If Not Intersect(Target, Range(grp)) Is Nothing Then Cancel = True
    Next
End Sub

Afin d'éviter de rentrer en mode de saisie lors d'un clic un peu long ou un double clic intempestif.
ceci n'enlève rien au joli travail de mafraise !

@ bientôt

LouReeD

Bonsoir LouReeD,

Je n'y avais pas pensé au double-clique...

Bonsoir,

sur la base de votre fichier :

Option Explicit
' plage des groupes d'options
Const GroupesOptions = "d3:d5 d8:d11 d14:d19"

' évite la saise de donnée de cellule lors du double clic gauche
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim grp
    For Each grp In Split(GroupesOptions)
        If Not Intersect(Target, Union(Range(grp), Range("D1"))) Is Nothing Then Cancel = True
    Next
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim grp, cel As Range
    If Target.CountLarge > 1 Then Exit Sub
    If Not Intersect(Columns("b:c"), Target) Is Nothing Then Range("d1").Select: Beep
    If Target.Column <> Range(Split(GroupesOptions)(0)).Column Then Exit Sub
    On Error GoTo err01
    Application.EnableEvents = False
        For Each grp In Split(GroupesOptions)
            If Not Intersect(Target, Range(grp)) Is Nothing Then
                For Each cel In Range(grp)
                    If cel.Address = Target.Address Then
                        cel.Value = IIf(cel.Value = Chr(254), Chr(111), Chr(254))
                    Else
                        cel.Value = Chr(111)
                    End If
                Next
                Range("d1").Select
                Exit For
            End If
        Next grp
err01:
    Application.EnableEvents = True
End Sub

Et comme il y a le changement de cellule lors de la sélection d'une cellule à cocher et qu'il n'y a pas accès au double clic, le code Change n'est plus utile.
Le MEF non plus...

Le fait de ne pas utiliser Application.ScreenUpdating évite d'avoir quelque fois le clignotement des ascenseurs de la fenêtre...
Une boucle qui switch la valeur de la cellule cliquée (comme cela on peut la désélectionner) et qui passe en non cochée les autres.

@ bientôt

LouReeD

Rechercher des sujets similaires à "empecher saisie case cocher"