Case à cocher Excel (non-booléenne)

Résolu
bighaze Messages postés 9 Statut Membre -  
bighaze Messages postés 9 Statut Membre -
Bonjour,

Je dois effectuer un travail sur Excel qui nécessite des cases à cocher avec macro mais qui présentent plus de deux état. Je m'explique : j'aimerai que quand l'on clique une fois dessus, la case soit cocher normalement (par exemple) et que en re-cliquant dessus, plutôt que de retourner à son état de base, celle-ci affiche un point, ou une croix, etc... puis, en cliquant une troisième fois, celle-ci soit décochée.

Merci d'avance !

5 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    si tu prends une case à cocher ActiveX tu peux mettre sa propriété TripleState à True.
    Tu auras : non coché, coché grisé, coché.
    eric
    1
    1. bighaze Messages postés 9 Statut Membre
       
      Merci pour ton aide. Ca m'a beaucoup avancé mais malgré cela je trouve que la différence entre les 3 états n'est pas assez flagrante. J'ai donc essayé de changer la police mais je bloque maintenant sur un autre problème. (je le poste à la suite)
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Une case à cocher est booléenne et donc ne peut présenter que 2 états: vrai- faux

    on peut toujours tenter avec un textbox de la forme d'un checkbox ou peut-^tre avec la linkedcell du checkbox
    0
    1. bighaze Messages postés 9 Statut Membre
       
      Merci pour ton aide ! mais je vais essayer avec la méthode d'Eric.
      0
  3. bighaze Messages postés 9 Statut Membre
     
    Re-bonjour à tous !

    Suite à la réponse d'Eric, j'ai pu trouver une checkbox à trois états mais je trouve que ceux-ci ne sont pas assez différenciable. En effet le but est d'avoir un changement qui soit plus visible qu'une croix grisé de façon à ce que l'opérateur puisse voir la différence assez facilement. J'ai donc pensé à une nouvelle chose c'est de garder l'idée de la TripleState checkbox mais de changer la police en fonction de la valeur que prend la checkbox. Seulement voilà : j'ai trouvé pas mal de chose sur internet qui m'ont fait arriver ici :

    __________________________________________________________
    Private Sub CheckBox1_Click()

    If CheckBox1.Value = True Then
    With ActiveSheet.CheckBox1
    .Font.Name = "Times New Roman"
    .Font.Size = 14

    ElseIf CheckBox1.Value = False Then
    With ActiveSheet.CheckBox1
    .Font.Name = "Calibri"
    .Font.Size = 11
    End With

    ElseIf CheckBox1.Value = Null Then

    With ActiveSheet.CheckBox1
    .Font.Name = "Calibri"
    .Font.Size = 24
    End With

    End If

    End Sub
    __________________________________________________________

    Malheureusement, la valeur 'Null' (case grisé) n'est pas reconnu et la police s'affiche de la même manière que dans le cas de la case décoché.

    J'ai déjà essayé :
    - de simplement laisser "Else" dans la 3ème condition
    - de mettre la valeur différent de 'True' et différente de 'False' dans la 3ème condition

    Voilà voilà ! C'est la première fois que je fais du vba c'est donc un mix de ce que j'ai trouvé sur internet et que j'ai pensé juste.
    Merci pour votre aide !

    A bientôt!
    0
    1. bighaze Messages postés 9 Statut Membre
       
      Je viens de tomber sur ça :
      ________________________________________
      Private Sub CheckBox1_Change()
      If IsNull(CheckBox1.Value) Then
      CheckBox1.Caption = "Value is Null"
      ElseIf CheckBox1.Value = False Then
      CheckBox1.Caption = "Value is False"
      ElseIf CheckBox1.Value = True Then
      CheckBox1.Caption = "Value is True"
      End If
      End Sub _______________________________

      J'ai donc remplacer par l'expression "IsNull()" mais rien ne change.
      0
    2. Jauster Messages postés 142 Statut Membre 42
       
      Hello,
      Ayant déjà bien avancé dans l'apprentissage du VBA je ne suis aussi qu'un débutant.
      Cette histoire de triple state checkbox est un peu compliqué pour moi, mais je propose on ne sait jamais. Au lieu d'utiliser l'event "click" de la checkbox, pourquoi ne pas utiliser l'event "Change" :

      Private Sub CheckBox1_Change()
      
      End Sub


      Si j'ai bien compris son fonctionnement, le code se lancera au changement de statut de la checkbox
      0
    3. Jauster Messages postés 142 Statut Membre 42
       
      Je viens de voir, et je pense que tu n'as pas fait attention aussi puisque tu ne le précises pas, mais un coup tu utilises l'event Click et un coup l'event Change. As-tu essayé avec :

      Private Sub CheckBox1_Change()
      If IsNull(CheckBox1.Value) Then 
        With ActiveSheet.CheckBox1 
          .Font.Name = "Calibri" 
          .Font.Size = 24 
        End With
      
      ElseIf CheckBox1.Value = False Then 
        With ActiveSheet.CheckBox1 
          .Font.Name = "Calibri" 
          .Font.Size = 11 
        End With 
      
      ElseIf CheckBox1.Value = True Then 
        With ActiveSheet.CheckBox1 
          .Font.Name = "Times New Roman" 
          .Font.Size = 14
        End With 
      
      End If 
      
      End Sub


      Il te manque un End With d'ailleurs. Le premier.

      EDIT : J'ai changé = Null par IsNull
      0
    4. bighaze Messages postés 9 Statut Membre
       
      Effectivement j'ai retirer le premier End With en modifiant le programme pour le poster ici mais il apparait bien sur le code.
      J'ai essayer ton code et... CA MARCHE ! Merci énormément j'y suis depuis 3heures et effectivement il fallait changer d'event ^^
      Merci encore, bonne journée !
      0
  4. bighaze Messages postés 9 Statut Membre
     
    Merci à tous pour vos réponses, j'ai finalement réussi avec l'aide de Jauster !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    perso je trouve bizarre de jouer sur la taille du texte.
    Pourquoi ne pas changer la couleur du texte ou du fond ?
    eric
    0
    1. bighaze Messages postés 9 Statut Membre
       
      Re-bonjour,
      En fait j'ai déjà un code couleur défini pour le fond et/ou le cadre puisque je dois définir des niveaux de maintenance sur certaines pièces à partir du schéma d'un montage hydraulique. Le problème est donc que je ne peux pas vraiment changer le fond et le cadre puisque ceux-ci sont de couleur prédéfini.
      Je vais bien sûr changer la couleur du texte et pas seulement modifié la taille (ce que j'ai envoyé comme partie de code n'était qu'une ébauche pour savoir si c'était réalisable et si je m'engageais sur cette voie là.)

      Bonne journée

      Julien
      0