Utiliser des fausses à cocher (CheckBox)

Page mise à jour le : 22/08/2008

Tout d'abord, il est important de savoir qu'Excel prend en charge
deux types de contrôles de Case à cocher :
    - Contrôles Excel (barre d'outils Formulaires)
    - Contrôles ActiveX (barre d'outils Visual Basic)

Pour plus de détails sur ces contrôles, vous pouvez consulter ce lien

Les 2 barres d'outils existantes :

     

Dans l'exemple présenté, nous utiliserons une autre technique à savoir
une Zone de texte de la barre d'outil Dessin.

     

Dans une feuille Excel, vous déposez des "Zone de texte" comme dans l'exemple ci-dessous qui en compte six :

Chacune de ces zones de texte comporte un nom unique à savoir :
    Zone de texte 1
    Zone de texte 2
    Zone de texte 3
    Zone de texte 4
    Zone de texte 5
    Zone de texte 6

A présent, on va créer une macro pour l'associer à ces 6 zones de texte.
Allez dans l'éditeur VBE, insérer un module et créer une macro.
Nous lui donnerons le nom ZoneDeTexte_QuandClic() et pour l'instant avec aucun code à l'intérieur.
Nous avons donc un module comme ceci :

     

Sub ZoneDeTexte_QuandClic()

End Sub

Maintenant nous allons associer chaque zone de texte à cette macro.
   - Sélectionner une des zone de texte
   - Faire un clic droit sur cette zone de texte et choisir Affecter à une macro
     et choisir la macro que nous venons de créer.
   Refaire à l'identique pour les cinq autres zone de texte

Maintenant comment savoir quelle est la zone de texte qui a été cliquée pour
lui associer un événement suite à ce clic ?

Il existe une propriété Caller de l'objet Application qui renvoie des informations
relatives à la manière dont Visual Basic a été appelé.
Pour simplifier, lorsque l'on clique sur une des zone de texte, la commande Application.Caller
retourne le nom de l'objet (Shapes dans notre cas) qui a lancé la macro.

Exemple : Je clique sur la 3ème zone de texte en partant du haut,la ligne de
             commande Application.Caller retourne Zone de texte 3.

A partir de là, avec un peu de code VBA, on peut mettre un X (une croix) dans la zone de texte lorsque
l'on clique et la retirer lorsque l'on re-clique et ainsi de suite.

Exemple de code VBA pour mettre ou retirer une croix (X) dans la zone de texte cliquée

Sub ZoneDeTexte_QuandClic()

  With ActiveSheet

    Z = .Shapes(Application.Caller).TextFrame.Characters.Text

    If Z = "" Then    ' Zone de texte vide

      .Shapes(Application.Caller).TextFrame.Characters.Text = "X"

    Else    ' Zone de texte avec un X

      .Shapes(Application.Caller).TextFrame.Characters.Text = ""

    End If

  End With

End Sub

Découvrer une animation représentant un exemple d'utilisation

Télécharger l'exemple