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

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

  • Cases à cocher.xlsm
    19.7 KB · Affichages: 15
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...

Amilo

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

Amilo

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

Jacky67

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

  • Cases à cocher.xlsm
    17.3 KB · Affichages: 10
Dernière édition:

Amilo

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

  • Cases à cocher_.xlsm
    33.6 KB · Affichages: 9
Dernière édition:

Staple1600

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

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

Amilo

XLDnaute Accro
@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
 

Staple1600

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

Discussions similaires

Réponses
5
Affichages
187
Réponses
2
Affichages
292

Statistiques des forums

Discussions
312 281
Messages
2 086 752
Membres
103 387
dernier inscrit
Loloninho