XL 2019 Cocher décocher une plage de cellules et non la fenêtre en un click gauche

  • Initiateur de la discussion Initiateur de la discussion Madoka
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Madoka

XLDnaute Nouveau
Bonjour,

Comment puis je faire pour que ma cellule A4, qui en un click gauche, décoche toutes le coches de la plage de cellule C6 à E13 ?
Je vous remercie par avance,
 
Bonjour,

Mes cases a cocher sont comme sur la 1e image.
J'ai d'autre coches qui sont sur la même feuille.
En gros, l'idéal est que :
- les coches du quotidien a son propre bouton réinitialiser cad décocher => C6 à E13
- les coches du hebdomadaire a son propre bouton réinitialiser cad décocher => C7 à C44

J'ai cru voir chez une personne qu'il avait juste à cliquer dans une cellule pour réinitialiser et ses coches ont été décoché
 
Bonsoir le forum
Bonsoir Madoka, Dudu2, Jean-Marie

J'ai cherché, cherché, en vain... J'y arriverai un jour 😡🙂.....
Donc, la seule chose que je pouvais proposer était l'effacement des coches (ActivesX) de toutes les CheckBox DE LA FEUILLE via :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Object
 If Not Intersect(Target, Range("A4")) Is Nothing Then
 For Each c In ActiveSheet.OLEObjects
           If InStr(1, c.Name, "CheckBox") > 0 Then
            c.Object.Value = False
        End If
    Next
    End If
End Sub
Je ne parviens pas à sélectionner qu'un Range("C6:E13") dans la procédure ... , toutes les CheckBoxs de la feuilles (For Each c In ActiveSheet.) sont concernées par le code ????

Bonne soirée à toutes & à tous
@+ Eric c
 
Dernière édition:
Pour effacer les CheckBoxes dans un certain Range:

Edit: code corrigé 07/04/2022 13h25 pour mettre xlOff à la place de False
Edit: code corrigé 07/04/2022 14h08 pour identifier correctement une CheckBox Form Control
VB:
Sub ClrFromControl()
    Call ClearFormControlCheckBoxesInRange(ActiveSheet.[F3:F5])
End Sub

'---------------------------------
'Manip sur Contrôles de formulaire
'---------------------------------
Sub ClearFormControlCheckBoxesInRange(Rng As Range)
    Dim Shp As Shape
  
    For Each Shp In ActiveSheet.Shapes
        'La Shape est un Form Control
        If Shp.Type = msoFormControl Then
            'La Shape est une CheckBox
            If Shp.FormControlType = xlCheckBox Then
                'La Shape est dans le Range demandé
                If Not Intersect(Rng, Shp.TopLeftCell) Is Nothing Then
                    Shp.OLEFormat.Object.Value = xlOff
                End If
            End If
        End If
    Next
End Sub
 
Dernière édition:
Bonsoir le forum
@Dudu2 : Je vais regarder ton fichier mais il me semble tout comme celui de Jean-Marie, qu'il utilise des contrôles de formulaires et non des contrôles ActiveX. Je vais essayer de voir si je peux transposer cela.
Bonne soirée et Grand merci.
@+ Eric c
 
Bonjour,
Je n'en sais absolument rien car l'auteur du sujet n'a pas daigné poster un fichier.
Je me suis donc basé sur le fichier indiqué par @ChTi160 sur lequel les CheckBoxes sont des Contrôles de Formulaire (sélectionnables par clic gauche et non pas par le Mode Création).
 
Bonjour le forum
Bonjour Dudu2

Non, décidément, je ne parviens pas à imposer un Range ("C6:E13") pour, dans le cas présent, réinitialiser MES CheckBoxs issus de contrôles ActiveX.
Le code s'exécute sur tous les contrôles CheckBoxs présents sur la feuille...
Je continuerai ce soir.

Bonne journée à toutes & à tous
@+ Eric c
 
@Eric C,

Je ne sais pas de quoi tu parles.
Le seul fichier que je connaisse est celui du Post #9 et le RAZ par plage que j'y ai développé / installé fonctionne parfaitement.

Maintenant, s'il y a un autre fichier candidat à ce RAZ par plage il serait plus qu'utile de le partager.
 
Dernière édition:
Et si dans ce fichier virtuel, il s'agit de Contrôles ActiveX, le code, testé virtuellement évidemment, est le suivant:
Edit: code corrigé 07/04/2022 14h08 pour identifier correctement une CheckBox Active X Control
VB:
Sub ClrActiveXControl()
    Call ClearActiveXControlCheckBoxesInRange(ActiveSheet.[D3:D5])
End Sub

'---------------------------
'Manip sur Contrôles ActiveX
'---------------------------
Sub ClearActiveXControlCheckBoxesInRange(Rng As Range)
    Dim Shp As Shape
  
    For Each Shp In ActiveSheet.Shapes
        'La Shape est un ActiveX Control
        If Shp.Type = msoOLEControlObject Then
            'La Shape est une CheckBox
            If TypeName(Shp.OLEFormat.Object.Object) = "CheckBox" Then
                'La Shape est dans le Range demandé
                If Not Intersect(Rng, Shp.TopLeftCell) Is Nothing Then
                    Shp.OLEFormat.Object.Object.Value = False
                End If
            End If
        End If
    Next
End Sub
 
Dernière édition:
D'ailleurs pour les Contrôles de Formulaire, je viens de remarquer que les Check Boxes ne prennent pas comme valeurs True ou False mais xlOn (1) et xlOff (-4146), même si étrangement True et False sont acceptés en affectation et sont interprétés comme xlOn et xlOff.
Mais on ne peut évidemment pas faire une opération booléenne sur ces valeurs, par ex = Not (valeur).

J'ai corrigé le code du Post #8 et le fichier du Post #9.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
456
Réponses
18
Affichages
807
Retour