Microsoft 365 Case à cocher apparait si une autre case est cochée

  • Initiateur de la discussion Initiateur de la discussion dacunha
  • 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 !

dacunha

XLDnaute Nouveau
Bonjour,
J'aimerais que vous puissiez m'aider dans la construction de mon tableau Excel.
En effet, j'ai différentes cases à cocher et j'aimerais que certaines n'apparaissent que si l'une des cases des cellules D6 à D9 sont elles-mêmes cochées (une seule d'entre elles).
Auriez-vous une solution à me proposer?
Je vous remercie.
 
Bonjour,
Merci pour ce tuto. J'ai réussi, regarde
1744284128970.png


J'ai continué le test en ajoutent la cases B11, d'abord dans le tableau DATA puis la case à cocher en Feuil1. Ca fonctionne aussi !

1744284487723.png


1744284503254.png


Je suis trop contente d'avoir réussi. Merci pour toutes tes explications.

Le seul petit hic, c'est que j'obtiens (et même avant d'ajout la ligne B11 et la case B11), une erreur
1744284962665.png

Lors de mon test, j'ai remarqué que la question 3 n'était pas posée malgré qu'elle soit sur le DATA, je n'ai pas le popup qui s'ouvre.

Merci

Bonjour le fil

@dacunha
Il ne fallait rien créer manuellement
Voici un mode opératoire détaillé
1) Tu ouvres Excel et tu fais CTRL+N
Cela va te créer un classeur vierge
Dans ce classeur, tu fais ALT+F11 puis Insertion/Module
Dans ce module, tu copies la macro nommée Nouveau_WBK
et tu l'exécutes => tu obtiens alors le classeur de test (avec les deux cases à cocher insérées et le tableau datas créé)
Tu enregistres ce classeur en *.xlsm puis tu fermes Excel.

2) Tu ré-ouvres ce classeur
Normalement tu as deux cases à cocher sur la feuille 1 et le tableau datas sur la feuille 2
Tu vas sur la feuille 2 et tu fais un clic-droit sur l'onglet tu choisis visualiser le code
Regarde la pièce jointe 1216212
Et c'est donc dans le code de la feuille Feuil1 (et non pas dans un module standard) , qu'il faut copier la macro évènementielle nommée Sub Worksheet_Change()

Normalement , ensuite le test doit fonctionner
Si tu cliques sur la case à cocher en B6, un inpuBox doit s'afficher
Idem quand tu cliques en B8

Ce fichier de test ne fonctionne qu'avec ces deux cellules B6 et B8
C'est pour cela qu'on retrouve B6 et B8 inscrits en colonne A du tableau datas

Si tu veux poursuivre le test, ajoute une ligne dans le tableau datas pour la cellule B11 (par exemple)
(en complétant aussi les autres colonnes)
Puis insères manuellement une case à cocher en B11 sur la feuille 1.
 

Pièces jointes

  • 1744284327300.png
    1744284327300.png
    63.4 KB · Affichages: 4
  • 1744284351627.png
    1744284351627.png
    47 KB · Affichages: 4
Dernière édition:
Bonsoir le fil

@dacunha
Bravo! La persévérance et la curiosité payent toujours 😉

Comme je le disais, c'est juste une ébauche.
Il faut voir maintenant si mon raisonnement sera applicable sur ton fichier réel (avec tes 38 cases à cocher)

L'erreur que tu décris survient quand tu cliques sur quelle case à cocher ?
 
Bonsoir,
Oui la persévérance est importante !
Je pense que cela sera adapté à mes besoins. Ce qui est aussi important, c'est qu'en fonction des cas, et donc du bouton radio coché, certaines cases apparaissent et d'autres non. Puis, en fonction des cases B6 à B9, suivant celle qui est cochée, le reste des cases apparait ou non.
Il faudra que j'essaie ensuite de voir si en mettant les infos actions et contacts à droite des cases à cocher (colonnes F et H de mon fichier exemple), ce qui serait le plus facile visuellement pour la personne qui traite le dossier, les informations des colonnes F et H restent bien visibles malgré le masquage des cases à cocher (en fonction de ce qui a été coché par les boutons radios puis ensuite par les cases B6 à B9.
L'erreur se produit une fois comme suit :
1 - je clique sur une case, n'importe laquelle pour mon exemple B8
2 - je réponds aux questions (la 3eme n'apparait pour l'instant pas)
3 - je décoche B8
4 - puis je coche une autre case B7 par exemple et j'obteiens ceci :
1744301702359.png

5 - je clique ensuite sur débogage et là j'otiens ceci :
1744301749592.png

Voici le fichier.
Merci

Bonsoir le fil

@dacunha
Bravo! La persévérance et la curiosité payent toujours 😉

Comme je le disais, c'est juste une ébauche.
Il faut voir maintenant si mon raisonnement sera applicable sur ton fichier réel (avec tes 38 cases à cocher)

L'erreur que tu décris survient quand tu cliques sur quelle case à cocher ?
 
Re

@dacunha
Remplace le code présent dans la feuille 1 par celui-ci
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
If Not Intersect(Columns(2), Target) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Select Case Target.CellControl.Type
Case xlTypeCheckbox
If Target.Value = False Then Exit Sub
For i = 3 To [datas].Columns.Count Step 2
x = Target.Address(0, 0)
If IsError(Application.Match(x, Feuil2.ListObjects(1).DataBodyRange.Columns(1), 0)) Then Exit Sub
If Not IsEmpty(Application.VLookup(x, [datas], i, 0)) Then
Range(Application.VLookup(x, [datas], i, 0)) = InputBox(Application.VLookup(x, [datas], i - 1, 0))
End If
Next
Case Else
'
End Select
End If
End Sub
Ensuite ajoute d'autres cases à cocher sur la feuille 1 et remplis le tableau datas en conséquence

Exemple
Exemple_II.PNG
 
Re

@dacunha
Remplace le code présent dans la feuille 1 par celui-ci
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
If Not Intersect(Columns(2), Target) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Select Case Target.CellControl.Type
Case xlTypeCheckbox
If Target.Value = False Then Exit Sub
For i = 3 To [datas].Columns.Count Step 2
x = Target.Address(0, 0)
If IsError(Application.Match(x, Feuil2.ListObjects(1).DataBodyRange.Columns(1), 0)) Then Exit Sub
If Not IsEmpty(Application.VLookup(x, [datas], i, 0)) Then
Range(Application.VLookup(x, [datas], i, 0)) = InputBox(Application.VLookup(x, [datas], i - 1, 0))
End If
Next
Case Else
'
End Select
End If
End Sub
Ensuite ajoute d'autres cases à cocher sur la feuille 1 et remplis le tableau datas en conséquence

Exemple
Regarde la pièce jointe 1216298
Bonjour,
Je viens de modifier le code de la Feuil1 et j'ai ajouté des cases. Tout fonctionne parfaitement.
J'ai essayé de mettre des cases en D6, D7..., j'ai complété le DATA avec les questions mais je n'obtiens pas les questions hormis si elles sont dans la colonne B.
Un petit bémol concernant le format date, elles s'écrivent à l'envers. Par exemple, si je saisie 01/05/2025 j'obtiens 05/01/2025.
Merci
 
Dernière édition:
Bonjour le fil

@dacunha
Donc si tu as bien compris le principe de fonctionnement
Si le tableau [data] est bien rempli
Si les cases à cocher sont dans les bonnes cellules, cela devrait fonctionner.

PS: Cette macro Nouveau_WBK n'était qu'une aide pour créer un fichier exemple.
Une fois 'exemple créé, il faut la supprimer.

NB: je viens d'ouvrir ta PJ de message#48
Ce n'est pas le bon code qui est dans la feuille 1 (qui chez toi se nomme ZCOUP)

Il faut mettre le code VBA que j'ai publié dans le message#50
 
Bonjour le fil

@dacunha
Donc si tu as bien compris le principe de fonctionnement
Si le tableau [data] est bien rempli
Si les cases à cocher sont dans les bonnes cellules, cela devrait fonctionner.

PS: Cette macro Nouveau_WBK n'était qu'une aide pour créer un fichier exemple.
Une fois 'exemple créé, il faut la supprimer.

NB: je viens d'ouvrir ta PJ de message#48
Ce n'est pas le bon code qui est dans la feuille 1 (qui chez toi se nomme ZCOUP)

Il faut mettre le code VBA que j'ai publié dans le message#50
Bonjour,
Oui, j'ai bien mis le bon code (j'ai du me tromper de fichier. Le voici).
1744549519935.png

1744549541660.png

1744549586745.png

Lorsque je coche par exemple D6, je n'obtiens pas les questions. Chez toi, cela fonctionne? Si oui, j'ai dû faire une bêtise

Je te joins mon fichier.

J'ai également commencé à réaliser mon fichier définitif. J'ai créé toute la base DATA, j'ai remis certaines formules concernant mes données et je suis très contente du rendu. Sur ce fichier également, j'ai bien mis le Nouveau_WBK et j'ai les mêmes symptômes que sur mon fichier Test, seules les cases en colonne B fonctionnent.
Les seules choses que je n'ai pas réussi à faire sur ce fichier définitif, c'est de :
1 - Créer la macro RESET car, lorsque j'utilisais les cases à cocher du menu développeur mon code fonctionnait mais avec les cases d'Excel 365 (insertion), ce dernier ne veut pas fonctionner et le RESET ne fonctionne pas.
VB:
Sub decoche_tout()
For Each coche In ActiveSheet.Shapes
    If coche.Name Like "Check*" Then coche.ControlFormat.Value = False
Next coche
End Sub
J'ai tenté plusieurs codes mais en vain.
2 - Faire en sorte que certaines cases ne soient pas visibles lorsque je coche la case B6 par exemple.
J'ai tenté une solution via la mise en forme conditionnelle, en disant mettant cette formule :
1744556665116.png

1744556689634.png

La couleur est identique à celle des cases et masque donc visuellement parlant la case mais la case reste toujours cliquable. Je suppose qu'il y a mieux et plus simple mais pour l'instant je n'ai pas trouvé. J'envisage donc de créer pour chaque case, cette même formule conditionnelle. Mon but étant de verrouiller ou masquer les cases par exemple B7 à B9 dès lors où j'ai coché B6. Aussi, en premier lieu ce sont les boutons radios que je dois sélectionner qui devraient faire apparaitre, pour l'un, les cases B6 à B9 et pour l'autre les cases D6 à D10. Puis en cochant D6, les autres cases du dessous devraient apparaitre. Je ne sais pas si cela est possible?
1744550663153.png

3 - Pour le format date, le problème est identique sur mon fichier test et sur mon fichier définitif. Lorsque j'écris le 01/05/2025 j'obtiens 05/01/2025.

Merci pour ton aide
 
Dernière édition:
Re

Test OK sur mon PC pour cette macro de RAZ
VB:
Sub R_A_Z()
Dim ws As Worksheet, c As Range
Set ws = Worksheets("ZCOUP")
For Each c In ws.UsedRange
    If Not c.CellControl Is Nothing Then
        If c.CellControl.Type = xlTypeCheckbox Then
            c.Value = False
        End If
    End If
Next c
End Sub

Sinon il faut remplacer (ou adapter) une nouvelle fois la procédure la macro événementielle
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'version du 13/4/25
Dim x
If Not Intersect(Range("B:D"), Target) Is Nothing Then '-< ici modif
If Target.Count > 1 Then Exit Sub
Select Case Target.CellControl.Type
Case xlTypeCheckbox
If Target.Value = False Then Exit Sub
For i = 3 To [datas].Columns.Count Step 2
x = Target.Address(0, 0)
If IsError(Application.Match(x, Feuil2.ListObjects(1).DataBodyRange.Columns(1), 0)) Then Exit Sub
If Not IsEmpty(Application.VLookup(x, [datas], i, 0)) Then
Range(Application.VLookup(x, [datas], i, 0)) = InputBox(Application.VLookup(x, [datas], i - 1, 0))
End If
Next
Case Else
'
End Select
End If
End Sub
 
Re

Test OK sur mon PC pour cette macro de RAZ
VB:
Sub R_A_Z()
Dim ws As Worksheet, c As Range
Set ws = Worksheets("ZCOUP")
For Each c In ws.UsedRange
    If Not c.CellControl Is Nothing Then
        If c.CellControl.Type = xlTypeCheckbox Then
            c.Value = False
        End If
    End If
Next c
End Sub

Sinon il faut remplacer (ou adapter) une nouvelle fois la procédure la macro événementielle
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'version du 13/4/25
Dim x
If Not Intersect(Range("B:D"), Target) Is Nothing Then '-< ici modif
If Target.Count > 1 Then Exit Sub
Select Case Target.CellControl.Type
Case xlTypeCheckbox
If Target.Value = False Then Exit Sub
For i = 3 To [datas].Columns.Count Step 2
x = Target.Address(0, 0)
If IsError(Application.Match(x, Feuil2.ListObjects(1).DataBodyRange.Columns(1), 0)) Then Exit Sub
If Not IsEmpty(Application.VLookup(x, [datas], i, 0)) Then
Range(Application.VLookup(x, [datas], i, 0)) = InputBox(Application.VLookup(x, [datas], i - 1, 0))
End If
Next
Case Else
'
End Select
End If
End Sub
Re,
Super ! le RAZ fonctionne et la procédure de la macro événementielle fonctionne également. Maintenant lorsque je clique sur une case de la colonne D, les questions sont biens présentes.
Pour le format date, as-tu une idée? En fait, si le résultat est une date, je souhaiterai que le format soit DD/MM/YYY. Dans le DATA, mes colonnes D et F ne comportent que des questions qui attendent comme réponse une date.
Que penses-tu de passer par la mise en forme conditionnelle pour masquer les cases? Existe t-il un moyen différent?
Merci
 
Dernière édition:
Re

Je ne sais pas .
Est-ce vraiment nécessaire qu'elles soient masquées ,
Masquée oui mais là j'ai réussi en jouant avec la mise en forme conditionnelle mais cela n'empêche pas de cliquer sur la case, d'où l'idée de verrouiller la case ou de faire en sorte qu'elle soit inactive. Si par cas, je laisse ainsi, c'est déjà bien.
Et pour le format date, as-tu une idée? En fait, si le résultat est une date, je souhaiterai que le format soit DD/MM/YYY. Dans le DATA, mes colonnes D et F ne comportent que des questions qui attendent comme réponse une date.
Merci
 
Re

@dacunha
Voila pour les masquer
VB:
Sub RAZ_Bis()
Dim ws As Worksheet, c As Range
Set ws = Worksheets("ZCOUP")
For Each c In ws.UsedRange
    If Not c.CellControl Is Nothing Then
        If c.CellControl.Type = xlTypeCheckbox Then
            c.Value = False
            c.Interior.Color = vbWhite
            c.Font.Color = vbWhite
        End If
    End If
Next c
End Sub
Mais comment tu fais pour les retrouver ensuite si tu veux de nouveau les cocher ?
 
- 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
18
Affichages
837
Réponses
11
Affichages
814
Retour