Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Microsoft 365Case à cocher apparait si une autre case est cochée
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 !
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.
J'ai bien affecté la macro aux cellules B6 et B7 et effectivement j'obtiens les questions. Je ne sais pas si à ce stade là je devrais voir autre chose, par exemple les autres cases masquées?
@dacunha
C'est ton projet et je ne sais pas si tu veux (ou si il peut) être remodelé.
Si je devais mettre la main dans le cambouis, il me faudrait savoir:
le nombre total de case à cocher
le nombre de questions proches
J'ai commencé à déplacer quelques macros dans le module 1
Code:
Sub decoche_tout()
For Each coche In ActiveSheet.Shapes
If coche.Name Like "Check*" Then coche.ControlFormat.Value = False
Next coche
End Sub
Sub Caseàcocher_Cliquer_C()
Dim result
If CaseàcocherB22 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M19").Value = result
End Sub
Sub Caseàcocher_CliquerA()
Dim result
If CaseàcocherB19 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M16").Value = result
If CaseàcocherB19 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J19").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer_D()
Dim result
If CaseàcocherD19 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M21").Value = result
If CaseàcocherD19 = vrai Then result = InputBox("Veuillez entrer la date de report *** :")
If IsDate(result) Then Range("K22").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer_E()
Dim result
If CaseàcocherB13 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M10").Value = result
If CaseàcocherB13 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J13").Value = CDate(result)
If CaseàcocherB13 = vrai Then result = InputBox("Veuillez entrer la date de report *** :")
If IsDate(result) Then Range("K13").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer_B()
Dim result
If CaseàcocherB20 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M17").Value = result
If CaseàcocherB20 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J20").Value = CDate(result)
If CaseàcocherB20 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("K20").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer()
Dim result
If CaseàcocherD14 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M13").Value = result
If CaseàcocherD14 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J16").Value = CDate(result)
If CaseàcocherD14 = vrai Then result = InputBox("Veuillez entrer la date programmée *** :")
If IsDate(result) Then Range("K16").Value = CDate(result)
End Sub
On sent bien qu'il y a quelque chose à faire niveau simplification
@dacunha
C'est ton projet et je ne sais pas si tu veux (ou si il peut) être remodelé.
Si je devais mettre la main dans le cambouis, il me faudrait savoir:
le nombre total de case à cocher
le nombre de questions proches
J'ai commencé à déplacer quelques macros dans le module 1
Code:
Sub decoche_tout()
For Each coche In ActiveSheet.Shapes
If coche.Name Like "Check*" Then coche.ControlFormat.Value = False
Next coche
End Sub
Sub Caseàcocher_Cliquer_C()
Dim result
If CaseàcocherB22 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M19").Value = result
End Sub
Sub Caseàcocher_CliquerA()
Dim result
If CaseàcocherB19 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M16").Value = result
If CaseàcocherB19 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J19").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer_D()
Dim result
If CaseàcocherD19 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M21").Value = result
If CaseàcocherD19 = vrai Then result = InputBox("Veuillez entrer la date de report *** :")
If IsDate(result) Then Range("K22").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer_E()
Dim result
If CaseàcocherB13 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M10").Value = result
If CaseàcocherB13 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J13").Value = CDate(result)
If CaseàcocherB13 = vrai Then result = InputBox("Veuillez entrer la date de report *** :")
If IsDate(result) Then Range("K13").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer_B()
Dim result
If CaseàcocherB20 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M17").Value = result
If CaseàcocherB20 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J20").Value = CDate(result)
If CaseàcocherB20 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("K20").Value = CDate(result)
End Sub
Sub Caseàcocher_Cliquer()
Dim result
If CaseàcocherD14 = vrai Then result = InputBox("Veuillez entrer le solde *** :")
Range("M13").Value = result
If CaseàcocherD14 = vrai Then result = InputBox("Veuillez entrer la date *** :")
If IsDate(result) Then Range("J16").Value = CDate(result)
If CaseàcocherD14 = vrai Then result = InputBox("Veuillez entrer la date programmée *** :")
If IsDate(result) Then Range("K16").Value = CDate(result)
End Sub
On sent bien qu'il y a quelque chose à faire niveau simplification
Je ne suis pas certaine que l'on puisse le remodeler en fonction des questions qui ne sont pas identiques sauf 1 qui est identique sur chaque macro (solde).
Il y a 38 cases. Je n'ai pas compter les cases rouges car, dans mon idée, celles-ci pouvaient permettre de ne pas afficher les cases appartenant aux mêmes domaine 2,3,4... si je les sélectionnais, ce qui voudrait dire, qu'il n'y a rien à compléter dans ce domine si la case rouge est cochée
Pour les questions, je peux par exemple avoir :
- Veuillez entrer la date de CNP en cours
- Veuillez entrer la date de CNP programmée
- Veuillez entrer la date de CNP sécurité
- Veuillez entrer la date de report du traitement à J+10
- Veuillez entrer la date de report du traitement à J+20
- Veuillez entrer la date de report du traitement à J+30
- Veuillez entrer la date programmée de fin de contrat
- Veuillez entrer le montant mentionné sur le courrier
- Veuillez entrer la date de désactivation
....
C'est pour cela, en plus de mon ignorance sur le VBA, que j'avais créé 1 module par situation
@dacunha
En reprenant mon exemple simple de tout à l'heure
Ici la question change selon la case à cocher
VB:
Sub Cases_Cocher()
Dim chkBox As Object
Dim cellules, x$, adrA$, adrB$, messA$, messB$
cellules = Array(Array("C3", "D3", "F3"), Array("C5", "D5", "F5"))
messages = Array(Array("C3", "Veuillez entre le solde", "Veuillez entrer la date"), Array("C5", "Veuillez saisir le solde total", "Veuillez saisir la nouvelle date"))
Set chkBox = ActiveSheet.CheckBoxes(Application.Caller)
x = chkBox.TopLeftCell.Address(0, 0)
adrA = Application.VLookup(x, cellules, 2, 0)
adrB = Application.VLookup(x, cellules, 3, 0)
messA = Application.VLookup(x, messages, 2, 0)
messB = Application.VLookup(x, messages, 3, 0)
Select Case chkBox
Case xlOn
On Error Resume Next
Range(adrA).Value = InputBox(messA)
Range(adrB).Value = CDate(InputBox(messB))
Case Else
'
End Select
End Sub
Tu comprends le principe de fonctionnement de la macro ?
(ce serait plus simple si la réponse est oui, pour pouvoir aller plus loin 😉 )
Je viens de voir que tu disposes de 365
Ce qui simplifie et "jolifie" les choses
Voir petit exemple ci-dessous
1) On utilise les nouvelles cases à cocher offertes par 365
2) Et on utilise une procédure événementielle
3) On a une feuille PARAMATRES (pour stocker pleine de choses)
Ce qui donne
le code VBA dans la feuille (pas dans un module standard)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim adrA$, ques$
If Not Intersect(Columns(2), Target) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Select Case Target
Case Is = True
quesA = Application.VLookup(Target.Address(0, 0), [datas], 2, 0)
quesB = Application.VLookup(Target.Address(0, 0), [datas], 4, 0)
adrA = Application.VLookup(Target.Address(0, 0), [datas], 3, 0)
adrB = Application.VLookup(Target.Address(0, 0), [datas], 5, 0)
Range(adrA).Value = InputBox(quesA)
Range(adrB).Value = Cdate(InputBox(quesB))
Case Else
''
End Select
End If
End Sub
[datas] correspond à une plage nommée sur la feuille PARAMETRES
PS: La feuille PARAMTRES peut être masquée, cela fonctionne toujours.
@dacunha
En reprenant mon exemple simple de tout à l'heure
Ici la question change selon la case à cocher
VB:
Sub Cases_Cocher()
Dim chkBox As Object
Dim cellules, x$, adrA$, adrB$, messA$, messB$
cellules = Array(Array("C3", "D3", "F3"), Array("C5", "D5", "F5"))
messages = Array(Array("C3", "Veuillez entre le solde", "Veuillez entrer la date"), Array("C5", "Veuillez saisir le solde total", "Veuillez saisir la nouvelle date"))
Set chkBox = ActiveSheet.CheckBoxes(Application.Caller)
x = chkBox.TopLeftCell.Address(0, 0)
adrA = Application.VLookup(x, cellules, 2, 0)
adrB = Application.VLookup(x, cellules, 3, 0)
messA = Application.VLookup(x, messages, 2, 0)
messB = Application.VLookup(x, messages, 3, 0)
Select Case chkBox
Case xlOn
On Error Resume Next
Range(adrA).Value = InputBox(messA)
Range(adrB).Value = CDate(InputBox(messB))
Case Else
'
End Select
End Sub
Tu comprends le principe de fonctionnement de la macro ?
(ce serait plus simple si la réponse est oui, pour pouvoir aller plus loin 😉 )
Je viens de voir que tu disposes de 365
Ce qui simplifie et "jolifie" les choses
Voir petit exemple ci-dessous
1) On utilise les nouvelles cases à cocher offertes par 365
2) Et on utilise une procédure événementielle
3) On a une feuille PARAMATRES (pour stocker pleine de choses)
Ce qui donne
le code VBA dans la feuille (pas dans un module standard)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim adrA$, ques$
If Not Intersect(Columns(2), Target) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Select Case Target
Case Is = True
quesA = Application.VLookup(Target.Address(0, 0), [datas], 2, 0)
quesB = Application.VLookup(Target.Address(0, 0), [datas], 4, 0)
adrA = Application.VLookup(Target.Address(0, 0), [datas], 3, 0)
adrB = Application.VLookup(Target.Address(0, 0), [datas], 5, 0)
Range(adrA).Value = InputBox(quesA)
Range(adrB).Value = InputBox(quesB)
Case Else
''
End Select
End If
End Sub
[datas] correspond à une plage nommée sur la feuille PARAMETRES Regarde la pièce jointe 1216148
PS: La feuille PARAMTRES peut être masquée, cela fonctionne toujours.
Re,
Oui j'ai bien 365. J'ai vu ces nouvelles cases à cocher mais n'avait pas trouvé la solution pour les associer à une macro. C'est la raison pour laquelle j'ai utilisé les cases à cocher du menu développeur . Je comprends ce que tu proposes. On inscrit toutes les questions sur la feuille paramètres, en associant les cellules concernées par telle ou telle question et la macro, placée dans la feuille, appelle la question si la case est cochée et renvoie à OUI.
C'est bien ça?
Est-ce que la case peut disparaitre en fonction de certaines autres cases?
Merci beaucoup
@dacunha
C'est l'idée mais reste à savoir l'essentiel:
Remaniement et refonte du document possible ou pas ?
Et si oui, mon aide ne sera que sporadique (question de planning taf vs loisirs)
En espérant donc que d'autres XLDnautes rejoignent le chantier pour t'aider
Quelques bouts de code pour te familiariser avec ces cases à cocher 365
Code:
Sub Inserer_Case_pour_test()
Range("B6").Select
Selection.CellControl.SetCheckbox
End Sub
Sub Cocher()
Range("B6").Value = True
End Sub
Sub Decocher_A()
Range("B6").Value = False
End Sub
Sub Decocher_B()
Range("B6").ResetContents
End Sub
Sub Griser_Case()
Range("B6").Value = ""
Range("B6").ClearContents
End Sub
Sub test_A()
If Range("B6").CellControl.Type = xlTypeCheckbox Then
MsgBox "La cellule " & Range("B6").Address(0, 0) & " contient une case à cocher"
Else
'
End If
End Sub
Sub test_B()
If ActiveCell.CellControl.Type = xlTypeCheckbox Then
MsgBox "La cellule " & ActiveCell.Address(0, 0) & " contient une case à cocher"
Else
MsgBox "La cellule " & ActiveCell.Address(0, 0) & " ne contient pas de case à cocher"
End If
End Sub
@dacunha
C'est l'idée mais reste à savoir l'essentiel:
Remaniement et refonte du document possible ou pas ?
Et si oui, mon aide ne sera que sporadique (question de planning taf vs loisirs)
En espérant donc que d'autres XLDnautes rejoignent le chantier pour t'aider
Quelques bouts de code pour te familiariser avec ces cases à cocher 365
Code:
Sub Inserer_Case_pour_test()
Range("B6").Select
Selection.CellControl.SetCheckbox
End Sub
Sub Cocher()
Range("B6").Value = True
End Sub
Sub Decocher_A()
Range("B6").Value = False
End Sub
Sub Decocher_B()
Range("B6").ResetContents
End Sub
Sub Griser_Case()
Range("B6").Value = ""
Range("B6").ClearContents
End Sub
Sub test_A()
If Range("B6").CellControl.Type = xlTypeCheckbox Then
MsgBox "La cellule " & Range("B6").Address(0, 0) & " contient une case à cocher"
Else
'
End If
End Sub
Sub test_B()
If ActiveCell.CellControl.Type = xlTypeCheckbox Then
MsgBox "La cellule " & ActiveCell.Address(0, 0) & " contient une case à cocher"
Else
MsgBox "La cellule " & ActiveCell.Address(0, 0) & " ne contient pas de case à cocher"
End If
End Sub
Re,
Oui le document n'est pas figé dans sa présentation. J'ai fait cette présentation pour que lors du traitement on visualise sur la feuille, un max d'informations et que l'on voit l'incrémentation faite lors des réponses aux pop-ups.
Si cela ne t'embête pas, peux-tu me transmettre ton fichier test que je vois si avec ta base je peux tenter de continuer?
Je comprends tout à fait tes impératifs.
Merci
@dacunha
Depuis le 22 mai 1968, trois heures de l'après-midi, je ne joins plus aucun fichier Excel, sur aucun forum.
Pour reproduire l'exemple du message#36, tout est dans le message pour le reproduire par toi-même.
• Pour te mettre le pied à l'étrier, voici un peu de VBA pour créer le contenu des feuilles Feuil1 et Feuil2
Code:
Sub Creer_Exemple()
With Worksheets("Feuil2")
.[A1] = "ADRESSE"
.[B1] = "Question_1": .[C1] = "REP_1"
.Range("B1:C1").AutoFill Destination:=.Range("B1:G1"), Type:=xlFillDefault
.[A2:E2] = Array("B6", "Veuillez entrer le solde", "C1", "Entrer la date", "D1")
.[A3:G3] = Array("B8", "Saisir le solde", "C2", "Indiquez la date", "D2", "Saisir la date", "E2")
.ListObjects.Add(xlSrcRange, .Range("$A$1:$G$3"), , xlYes).Name = "datas"
End With
End Sub
Sub Inserer_Cases()
Worksheets("Feuil1").Range("B6,B8").CellControl.SetCheckbox
End Sub
• Reste plus ensuite qu'à copier/coller le code VBA du message#36 dans le code de la feuille Feuil1
(en faisant clic-droit sur l'onglet -> Visualiser le code)
Bons tests, je quitte mon clavier pour prendre le soleil quelques heures.
Re,
Ok pas de problème, c'est ton choix et je le respecte totalement.
J'ai reproduis l'exemple du message #36 et j'ai mis dans feuil5 (c'est le nom de ma feuille), le code du message #36 également.
Je n'arrive pas à comprendre à quoi servent les codes VBA des messages #39 et #41. Faut-il également les intégrer quelque part?
Voilà ce que j'ai fait :
Voici ma feuill5 avec les cases 365 :
Lorsque je clique sur D6 ou D8, j'obtiens ceci. Peut-être dois-je ajouter un code supplémentaire à celui du #36 dans la feuil5?
Pourrais-tu me dire comment il faut comprendre ces lignes y compris les chiffres du bout de ligne :
quesA = Application.VLookup(Target.Address(0, 0), [datas], 2, 0)
quesB = Application.VLookup(Target.Address(0, 0), [datas], 4, 0)
adrA = Application.VLookup(Target.Address(0, 0), [datas], 3, 0)
adrB = Application.VLookup(Target.Address(0, 0), [datas], 5, 0)
Range(adrA).Value = InputBox(quesA)
Range(adrB).Value = InputBox(quesB)
J'ai bien compris que [Datas] correspondait à une plage mais comment les nommer sur la feuille PARAMETRES, est-ce les chiffres mentionnés en bout de ligne qui permettent de les nommer?
Tu me dis "Pour te mettre le pied à l'étrier, voici un peu de VBA pour créer le contenu des feuilles Feuil1 et Feuil2". Faut-il que je créer des feuilles sur mon fichier Excel (comme les 3 feuilles déjà existantes) et qu'est-ce qui est attendu dans ces feuilles? Où est-ce des macros?
Bonne promenade et profites bien de ce joli soleil.
@dacunha
Depuis le 22 mai 1968, trois heures de l'après-midi, je ne joins plus aucun fichier Excel, sur aucun forum.
Pour reproduire l'exemple du message#36, tout est dans le message pour le reproduire par toi-même.
• Pour te mettre le pied à l'étrier, voici un peu de VBA pour créer le contenu des feuilles Feuil1 et Feuil2
Code:
Sub Creer_Exemple()
With Worksheets("Feuil2")
.[A1] = "ADRESSE"
.[B1] = "Question_1": .[C1] = "REP_1"
.Range("B1:C1").AutoFill Destination:=.Range("B1:G1"), Type:=xlFillDefault
.[A2:E2] = Array("B6", "Veuillez entrer le solde", "C1", "Entrer la date", "D1")
.[A3:G3] = Array("B8", "Saisir le solde", "C2", "Indiquez la date", "D2", "Saisir la date", "E2")
.ListObjects.Add(xlSrcRange, .Range("$A$1:$G$3"), , xlYes).Name = "datas"
End With
End Sub
Sub Inserer_Cases()
Worksheets("Feuil1").Range("B6,B8").CellControl.SetCheckbox
End Sub
• Reste plus ensuite qu'à copier/coller le code VBA du message#36 dans le code de la feuille Feuil1
(en faisant clic-droit sur l'onglet -> Visualiser le code)
Bons tests, je quitte mon clavier pour prendre le soleil quelques heures.
@dacunha
Le code proposé était juste pour reproduire l'exemple du message#36 tel quel
(afin de tester et comprendre le principe de fonctionnement)
Donc dans un premier temps, je t'invite à ne reproduire cette exemple sur un classeur vierge avec deux feuilles.
J'ai révisé ma précédente macro 1) Dans un classeur vierge, copier cette macro
Code:
Sub Nouveau_WBK()
Dim wbk As Workbook
With Application
.ScreenUpdating = False
.SheetsInNewWorkbook = 2
End With
Workbooks.Add
Set wbk = ActiveWorkbook
wbk.Sheets(1).Range("B6,B8").CellControl.SetCheckbox
With wbk.Sheets(2)
.[A1] = "ADRESSE"
.[B1] = "Question_1": .[C1] = "REP_1"
.Range("B1:C1").AutoFill Destination:=.Range("B1:G1"), Type:=xlFillDefault
.[A2:E2] = Array("B6", "Veuillez entrer le solde", "C1", "Entrer la date", "D1")
.[A3:G3] = Array("B8", "Saisir le solde", "C2", "Indiquez la date", "D2", "Saisir la date", "E2")
.ListObjects.Add(xlSrcRange, .Range("$A$1:$G$3"), , xlYes).Name = "datas"
End With
End Sub
Cela crée un nouveau classeur pour tester mon exemple simple.
2) Enregistre ce nouveau classeur avec le nom de ton choix (mais extension *.xlsm)
3) Copier le code VBA de la procédure événementielle Sub Worksheet_Change() dans le code de la feuille 1 de ce nouveau classeur.
Le test doit fonctionner, je viens de le faire (points 1 à 3)
Voila ce que ca donne
Redis-moi quand tu auras réussi à faire fonctionner ce simple test.
PS: j'ai amendé le code de Sub Worksheet_Change() par rapport au problème de date
@dacunha
Le code proposé était juste pour reproduire l'exemple du message#36 tel quel
(afin de tester et comprendre le principe de fonctionnement)
Donc dans un premier temps, je t'invite à ne reproduire cette exemple sur un classeur vierge avec deux feuilles.
J'ai révisé ma précédente macro 1) Dans un classeur vierge, copier cette macro
Code:
Sub Nouveau_WBK()
Dim wbk As Workbook
With Application
.ScreenUpdating = False
.SheetsInNewWorkbook = 2
End With
Workbooks.Add
Set wbk = ActiveWorkbook
wbk.Sheets(1).Range("B6,B8").CellControl.SetCheckbox
With wbk.Sheets(2)
.[A1] = "ADRESSE"
.[B1] = "Question_1": .[C1] = "REP_1"
.Range("B1:C1").AutoFill Destination:=.Range("B1:G1"), Type:=xlFillDefault
.[A2:E2] = Array("B6", "Veuillez entrer le solde", "C1", "Entrer la date", "D1")
.[A3:G3] = Array("B8", "Saisir le solde", "C2", "Indiquez la date", "D2", "Saisir la date", "E2")
.ListObjects.Add(xlSrcRange, .Range("$A$1:$G$3"), , xlYes).Name = "datas"
End With
End Sub
Cela crée un nouveau classeur pour tester mon exemple simple.
2) Enregistre ce nouveau classeur avec le nom de ton choix (mais extension *.xlsm)
3) Copier le code VBA de la procédure événementielle Sub Worksheet_Change() dans le code de la feuille 1 de ce nouveau classeur.
Je viens de créer un nouveau classeur du nom de Test et je l'ai bien enregistré en *.xlsm
J'ai créé mes 2 cases à cocher en B6 et B8.
J'ai crée l'onglet PARAMETRES de la même façon que tu l'as créé
J'ai mis le 1er code Sub Nouveau_WBK() dans Visual Basic Feuil1
J'ai ensuite mis le 2ème code Sub Worksheet_Change dans Visual Basic Feuil 1, en dessous du 1er code. Je ne suis pas certaine que c'est bien ce que tu m'expliques.
J'ai testé la macro et j'obtiens cela :
Je dois faire un truc mal. Je pense que je n'ai pas bien compris où coller les 2 codes car je les ai collé l'un et l'autre dans Feuil1.
@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
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.
- 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