Bonjour, j'aimerai avoir une case à cocher qui lorsque l'on clique dessus décohe toutes les cases, puis si on reclique dessus recoche toutes les cases ...
Pour l'instant, je n'arrive à avoir qu'un bouton qui décoche toutes les cases à cocher, mais ne fait rien lorsque l'on reclique dessus
VB:
Sub BoucleCheckBoxFalse()
Dim Shp As Shape
Dim Sh As Worksheet
Set ShBatchReviewData = ThisWorkbook.Sheets("Batch review Data")
For Each Shp In ShBatchReviewData.Shapes
If Shp.Name Like "Check Box*" Then
Shp.DrawingObject.Value = False
End If
Next Shp
End Sub
Bonjour à tous
Je n'aime pas les cases à cocher de Excel (en général inutiles et remplaçables à moindres frais par un simple "X" (ou vide) dans une case ad hoc)
Mais voilà ce que je ferais, par taquinerie :
VB:
If Shp.Name Like "Check Box*" Then
Shp.DrawingObject.Value = IIf(Shp.DrawingObject.Value < 0, 1, -4146)
End If
Merci pour ta réponse, mais à moins d'avoir mal compris ce n'est pas ce que je cherche. Il a aussi 2 fonctions "ToutCocher" et "ToutDécocher" avec j'imagine deux boutons (comme moi)
Je cherche à avoir qu'un seul bouton qui décoche tout, puis recoche tout par un clic.
Voici ce que j'ai actuellement :
VB:
Sub BoucleCheckBoxTrue()
Dim Shp As Shape
Dim Sh As Worksheet
Set ShData = ThisWorkbook.Sheets("Data")
For Each Shp In ShData.Shapes
If Shp.Name Like "Check Box*" Then
Shp.DrawingObject.Value = True
End If
Next Shp
End Sub
Sub BoucleCheckBoxFalse()
Dim Shp As Shape
Dim Sh As Worksheet
Set ShData = ThisWorkbook.Sheets("Data")
For Each Shp In ShData.Shapes
If Shp.Name Like "Check Box*" Then
Shp.DrawingObject.Value = False
End If
Next Shp
End Sub
Effectivement, votre exemple est un poil différent notamment avec les boutons d'option au lieu d'un CheckBox
Désolé, je laisse la main aux utilisateurs VBA, ça serait beaucoup plus fiable
Edit : c'est toujours mieux de joindre un fichier exemple au lieu d'une image
Bonjour flodumur
Bonjour le Fil ,le Forum
Peut être avec un truc de ce genre (non Testé pas de Fichier lol)
VB:
Sub BoucleCheckBoxFalse()
Dim Shp As Shape
Dim Sh As Worksheet
Set ShBatchReviewData = ThisWorkbook.Sheets("Batch review Data")
For Each Shp In ShBatchReviewData.Shapes
With Shp
If .Name Like "Check Box*" Then
.DrawingObject.Value = IIf(.DrawingObject.Value = True, False, True)
End If
End With
Next Shp
End Sub
Bonjour à tous
Je n'aime pas les cases à cocher de Excel (en général inutiles et remplaçables à moindres frais par un simple "X" (ou vide) dans une case ad hoc)
Mais voilà ce que je ferais, par taquinerie :
VB:
If Shp.Name Like "Check Box*" Then
Shp.DrawingObject.Value = IIf(Shp.DrawingObject.Value < 0, 1, -4146)
End If
Je vous contacte car je souhaite faire la même chose que vous dans un excel mais je suis novice. Je ne connais donc rien à la vba ni aux codes indiqués dans les messages ci-dessus. Pourriez-vous me préciser les étapes à effectuer pour arriver à avoir case à cocher qui coche et décoche toutes les cases dessous svp ?
•>AnneP
Joins un petit fichier exemple avec des cases à cocher
(NB: fichier allégé et sans données confidentielles)
EDITION: je reposte mon code du fil que je cite (pour éviter les allers et retours)
VB:
Sub Cocher_TOUT()
'coche tous les types de CheckBox
Application.ScreenUpdating = False
Cochez True
End Sub
Sub Décocher_TOUT()
'décoche tous les types de CheckBox
Application.ScreenUpdating = False
Cochez False
End Sub
Private Sub Cochez(statut As Boolean)
Dim c As Object
With ActiveSheet
.CheckBoxes.Value = statut
For Each c In .OLEObjects
If TypeName(c.Object) = "CheckBox" Then c.Object.Value = statut
Next c
End With
End Sub
•>AnneP
Joins un petit fichier exemple avec des cases à cocher
(NB: fichier allégé et sans données confidentielles)
EDITION: je reposte mon code du fil que je cite (pour éviter les allers et retours)
VB:
Sub Cocher_TOUT()
'coche tous les types de CheckBox
Application.ScreenUpdating = False
Cochez True
End Sub
Sub Décocher_TOUT()
'décoche tous les types de CheckBox
Application.ScreenUpdating = False
Cochez False
End Sub
Private Sub Cochez(statut As Boolean)
Dim c As Object
With ActiveSheet
.CheckBoxes.Value = statut
For Each c In .OLEObjects
If TypeName(c.Object) = "CheckBox" Then c.Object.Value = statut
Next c
End With
End Sub
Etape 1
Il faut enregistrer ton classeur au format *.xlsm
(pour conserver les macros)
2) Dans Excel, faire ALT+F11 puis Insertion/Module
Dans le grand carré blanc, coller la macro ci-dessous
VB:
Sub Caseàcocher1_Cliquer()
If [D4] = True Then
Cochez True
Else
Cochez False
End If
End Sub
Public Sub Cochez(statut As Boolean)
Dim c As Object
With ActiveSheet
.CheckBoxes.Value = statut
For Each c In .OLEObjects
If TypeName(c.Object) = "CheckBox" Then c.Object.Value = statut
Next c
End With
End Sub
Refaire ALT+F11 pour retourner dans Excel.
4) Faire un clic-droit sur la case à cocher en D4
Et choisir Format de contrôle et dans Cellule liée, saisir : $D$4
puis cliquez sur OK
Dernière étape:
Refaire un clic-droit sur la case à cocher et choisir Affecter une macro