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

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,
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Juste par curiosité, c'est quoi les coches d'une plage de cellules ?

Un genre de truc comme ça ?
1649237559277.png


Ou ça en Windings
1649237967417.png
 
Dernière édition:

Madoka

XLDnaute Nouveau
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é
 

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir Madoka, Dudu2, Jean-Marie

J'ai cherché, cherché, en vain... J'y arriverai un jour :mad::).....
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:

Dudu2

XLDnaute Barbatruc
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:

Dudu2

XLDnaute Barbatruc
Et le fichier fourni par @ChTi160 ! avec le code de RAZ par Range.

Edit: fichier 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
 

Pièces jointes

  • Lost Ark (Chti160).xlsm
    187.4 KB · Affichages: 2
Dernière édition:

Eric C

XLDnaute Barbatruc
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
 

Dudu2

XLDnaute Barbatruc
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).
 

Eric C

XLDnaute Barbatruc
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
 

Dudu2

XLDnaute Barbatruc
@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:

Dudu2

XLDnaute Barbatruc
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:

Dudu2

XLDnaute Barbatruc
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:

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 010
Membres
103 699
dernier inscrit
samSam31