XL 2019 Sélection/désélection cases à cocher

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

Amilo

XLDnaute Accro
Bonjour à tous,

J'ai intégré en cellule E5 une case à cocher de type "Contrôle de formulaire" et en cellules E8:E14 des cases à cocher via Insertion>Objet (Wingdings),
Pour ces dernières de E8:E14, j'ai utilisé du code VBA que j'ai inséré en feuil1 et un code en module1 pour la case à cocher en E5

Cependant, je rencontre les 2 problèmes ci-dessous :

- lorsque je coche/décoche une des cases en E8:E14, il faut que je clique dans une autre cellule si je veux à nouveau cocher/décocher la case :
Comment modifier le code pour cocher/décocher tout en restant dans la cellule active ?

- Concernant mon 2ème problème, j'ai un message d'erreur lorsque je souhaite utiliser la case à cocher de la cellule E5 pour tout sélectionner/désélectionner

J'ai mis également en G5 une case à cocher de même type que les cases E8:E14.
Si cela est plus facile, je souhaiterais plutôt utiliser ce type en lieu et place de E5

Edit : l'autre problème pour les cases à cocher en E8:E14 est une fois avoir coché/décoché une de mes cases et que je fais Entrée, la case du dessous se modifie également !!

En vous remerciant par avance pour votre aide

Cordialement
 

Pièces jointes

Dernière édition:
Solution
Bonjour à tous,

J'ai intégré en cellule E5 une case à cocher de type "Contrôle de formulaire" et en cellules E8:E14 des cases à cocher via Insertion>Objet (Wingdings),
Pour ces dernières de E8:E14, j'ai utilisé du code VBA que j'ai inséré en feuil1 et un code en module1 pour la case à cocher en E5

Cependant, je rencontre les 2 problèmes ci-dessous :

- lorsque je coche/décoche une des cases en E8:E14, il faut que je clique dans une autre cellule si je veux à nouveau cocher/décocher la case :
Comment modifier le code pour cocher/décocher tout en restant dans la cellule active ?

- Concernant mon 2ème problème, j'ai un message d'erreur lorsque je souhaite utiliser la case à cocher de la cellule E5 pour tout...
Bonjour fanfan38,

Merci beaucoup pour votre réponse, c'était effectivement la question que je m'étais posée si les contrôles activex n'étaient pas mieux.
Cependant, avec votre solution, je perds mes formules que j'avais dans la plage B8:B14,
Ces formules sont liées à chacune des cases à cocher en E8:E14

Est-ce qu'on peut combiner les formules avec les activex ?

Merci d'avance

Cordialement
 
fanfan38,

Ma formule en B8:B14 qui fonctionnait dans mon 1er fichier, ne renvoie désormais plus rien.
Je m'attendais à ce que la formule en B8:B14 me renvoie un résultat dans cette même plage : Ma formule ou vide selon que la case est cochée ou non.

C'était le problème que je soulevé dans mon précédent mail.

Merci d'avance
 
Bonjour à tous,

J'ai intégré en cellule E5 une case à cocher de type "Contrôle de formulaire" et en cellules E8:E14 des cases à cocher via Insertion>Objet (Wingdings),
Pour ces dernières de E8:E14, j'ai utilisé du code VBA que j'ai inséré en feuil1 et un code en module1 pour la case à cocher en E5

Cependant, je rencontre les 2 problèmes ci-dessous :

- lorsque je coche/décoche une des cases en E8:E14, il faut que je clique dans une autre cellule si je veux à nouveau cocher/décocher la case :
Comment modifier le code pour cocher/décocher tout en restant dans la cellule active ?

- Concernant mon 2ème problème, j'ai un message d'erreur lorsque je souhaite utiliser la case à cocher de la cellule E5 pour tout sélectionner/désélectionner

J'ai mis également en G5 une case à cocher de même type que les cases E8:E14.
Si cela est plus facile, je souhaiterais plutôt utiliser ce type en lieu et place de E5

Edit : l'autre problème pour les cases à cocher en E8:E14 est une fois avoir coché/décoché une de mes cases et que je fais Entrée, la case du dessous se modifie également !!

En vous remerciant par avance pour votre aide

Cordialement
Bonjour à tous
Autre proposition sans activeX
**Modifié
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E5:E14")) Is Nothing Then
        Select Case Target.Row
        Case 5
            Target.Value = IIf(Target.Value = "þ", "¨", "þ")
            [E6:E14] = IIf(Target.Value = "þ", "þ", "¨")
        Case 6 To 14
            Target.Value = IIf(Target.Value = "þ", "¨", "þ")
             [e5] = IIf(Application.CountIf([e6:e14], "þ") <> 9, "¨", "þ")
        End Select
        [b5].Activate
    End If
End Sub
 

Pièces jointes

Dernière édition:
Bonjour Jacky67,
Merci beaucoup, c'est parfait, c'est ce que j'attendais.

@fanfan38, voici votre dernier fichier en pièce jointe et dans lequel j'ai modifié ma formule en B8 pour votre compréhension.
J'ai indiqué cette fois que si la case est cochée alors je souhaite avoir 50 sinon ""
Cette formule ne fonctionne pas dans votre version.

Sinon, vous comprendrez mieux où je voulais en venir avec la version à Jacky67

Merci encore à vous

Bonne fin de journée à tous
Cordialement
 

Pièces jointes

Dernière édition:
Bonjour le fil, Amilo, fanfan38, jacky67

Dans la série: confinons, confluons et recyclons
Un petit exemple de "All in One", de jadis (ça peut toujours servir)
Coche/Décoche tout type de CheckBox *
*: ActiveX et/ou contrôles Formulaires
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
 
Dernière édition:
@Jacky67, j'étais justement en train de comprendre le code,
Que signifie le IIF devant le if ?
S'agit-il d'une variable non déclarée ?

Target.Value = IIf(Target.Value = "þ", "¨", "þ")

Merci d'avance

Re..
Ce n'est pas une variable mais une fonction vba
C'est l'équivalent de :
VB:
  If Target.Value = "þ" Then
          Target.Value = "¨"
     Else
         Target.Value = "þ"
  End If

Un petit coup de F1 sur "IIf" donne plus d'explications
 
@Staple1600, malheureusement je n'ai pas réussi à faire fonctionner votre code
J'ai essayé sur les fichiers à Jacky67 (cases Wingdings) et à fanfan38 (Contrôles activex) mais en vain.
Je ne sais pas si je dois activer une Référence-VBAProject dans l'éditeur VB ou bien adapter légèrement le code au fichier ?

@Jacky67, merci pour les explications, effectivement je ne pensais plus à l'aide F1,
Sinon, je n'avais jamais rencontré cette fonction mais c'est normal avec le faible niveau que j'ai en VBA 😉

Cordialement
 
Re

•>Amilo

Fais le test sur un classeur vierge
Insères des checkbok (des deux type: ActiveX et contrôles formulaires)
Puis copie le code VBA dans un module standard
Lance la macro nommée Sub test_I() pour tout cocher
puis Sub test_II() pour tout décocher.
Voir ci-dessous
01Amilo.gif
 
- 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
5
Affichages
132
Réponses
10
Affichages
140
Réponses
18
Affichages
837
Réponses
1
Affichages
89
Retour