Boîtes de dialogues personnalisées et contrôles

Il est possible d'enrichir Excel d'une interface graphique personnalisée. J'entends par là lui adjoindre ce qu'on appelle des contrôles (Boutons, listes déroulantes, zones de texte, ...). Ces contrôles peuvent être placés directement dans la feuille de calcul, ou dans une boîte de dialogue personnalisée (Par exemple, quand vous allez dans Fichier/Ouvrir, vous vous retrouvez dans une boîte de dialogue). Chacune de ces techniques apporte son lot d'avantages et d'inconvénients.

ATTENTION A LA CONFUSION : Les contrôles qui se placent directement dans une feuille de calcul ressemblent à s'y méprendre à ceux que l'on place dans une boîte de dialogue (Et pour cause, ils servent a peu près à la même chose), mais ce ne sont pas les mêmes ! Les contrôles que vous placerez directement dans une feuille de calcul sont les contrôles que vous trouverez dans Affichage/Barres d'outils/Formulaires, tandis que les contrôles que vous placerez dans une boîte de dialogue personnalisée se trouvent dans Affichage/Barres d'outils/Boîtes à outils

La barre d'outils boîte à outils :

La barre d'outils formulaire :

Commençons par les contrôles de formulaires

C'est à dire les contrôles qui se placent durectement dans la feuille.

1 : Etiquette. C'est un simple texte, comme on pourrait en écrire dans une cellule, sauf qu'ici, c'est un texte qui se superpose aux cellules, et c'est seulement lorsqu'on crée ce contrôle ou qu'on le modifie qu'on peut entrer du texte dedans

2. Zone d'édition : Par rapport à l'étiquette, la différence est que lorsque cette zone est posée, on peut y entrer du texte, comme dans une simple cellule.

3. Zone de groupe : Ce cadre sert à ce qu'on y mettes d'autres contrôles à l'intérieur. Son intér^t pointe le nez quand on y installe des boutons radios. Quand on place justement des boutons radios à l'intérieur de cette zone de groupe, on ne peut en sélectionner qu'un à la fois.

4. Bouton de commande : N'a un intérêt que lorsqu'on lui attribue une macro qui s'exécute quand on clique dessus.

5. Case à cocher : Ressemble au bouton radio, à la différence qu'on s'attend à pouvoir cocher plus d'une case, alors que le bouton radio, on ne peut en sélectionner qu'un.

6. Bouton Radio : Comme la case à cocher, mais en ne pouvant en sélectionner qu'un seul à la fois, donc.

7. Liste de choix : C'est avec ce contrôle qu'on peut choisir dans une liste (par exemple Rouge, Vert, Bleu).

8. Liste déroulante : Fonctionne comme une liste de choix, sauf que tous les choix ne sont pas apparents à l'écran. Il faut cliquer dessus pour voir apparaître les éléments

9.

10.

11. Ascenseur vertical : Permet d'incrémenter ou de décrémenter (Augmenter ou diminuer) la valeur d'une cellule

12. Compteur : Même utilité que l'ascenseur vertical, mais moins souple (L'ascenseur se manipule plus facilement). Par contre, ce contrôle est plus discret au niveau de l'apparence graphique

13. Fait apparaître les propriétés des contrôles

14. Fait apparaître l'environnement VBA si nous voulions que une action telle qu'un clic par exemple sur l'un des contrôles ci-dessus exécute une procédure VBA

15. Fait apparaître ou disparaître la grille Excel, tout simplement. L'utilité pourrait en être que lorsqu'on utilise des contrôles de formulaire, on n'a pas forcément envie qu'Excel soit quadrillé.

16.

Etiquette (Zone de texte fixe)

L'utilité de l'étiquette pourrait être, par exemple d'indisquer discrètement quel devrait être le contenu d'une cellule. Le dire dans une cellule à côté étant trop voyant, et dans un commentaire étant trop discret., comme ceci :

Protection des objets contre l'édition

Attention : Il suffit de cliquer sur cette étiquette pour l'éditer, ce qui n'est pas tellement désirable lors de l'utilisation réelle. Pour bloquer cette zone de texte, et d'ailleurs, c'est le même principe pour tous les contrôles, il faut cliquer 2 fois dessus pour faire apparaître les propriétés. Dans l'onglet Protection, il faut que Verrouillé soit coché (Normalement c'est le cas). Pour que ce verrouillage soit effectif, il faut faire Outils/Protection/Protéger la feuille, et cocher "Objets" (Normalement tout est coché). Faites OK, maintenant, vous ne pouvez plus du tout cliquer sur cette zone de texte, et, surtout, vous ne pouvez plus l'éditer jusqu'au moment ou vous déprotègerez la feuille.

Dans le cas ou vous protégez, avec la même méthode, des listes déroulantes, des cases à cocher, des boutons radio, ... Ce n'est pas que vous ne pourrez plus cliquer dessus, mais vous ne pourrez plus cliquer deux fois dessus pour les éditer, ni les redimensionner. C'est en fait une protection contre le changement de Structure !

Zone d'édition

Cette zone qui permettrait à l'utilisateur d'entrer des informations n'est apparamment pas disponible en tant que simple contrôle de formulaire à placer directement dans la feuille de calcul. Ce n'est pas trop grave en ce sens qu'il suffit de saisir n'importe quoi depuis n'importe quelle cellule.

Zone de groupe

Je vais vous montrer par l'exemple. Imaginons que nous voulions créer une zone de groupe avec 3 choix : Bleu, Rouge, Vert, comme ceci :

Marche à suivre :

1. Créez un groupe d'options

2. à l'intérieur, créez les 3 boutons radio comme dans l'exemple

3. Renommez les différents objets comme dans l'exemple

Et voilà. Le tour est joué. Maintenant, pour que le numéro de la case à cocher apparaisse dans une certaine cellule (disons B3), il faut cliquer avec le bouton droit sur l'un des 3 boutons radio, et dans l'onglet Contrôle, sur Cellule liée, sélectionnez B2, faites OK

Maintenant, selon la case que vous allez cliquer, le contenu de B2 va être maintenant 1,2 ou 3. Si on ne voulait pas le numéro d'ordre, mais bel et bien Bleu, Rouge ou Vert, alors, on peut utiliser la fonction Choisir en B3 par exemple, comme ceci :

=CHOISIR(C2;"Bleu";"Rouge";"Vert")

Il est possible d'affecter une macro quand on clique sur l'un des boutons radio. Il suffit de cliquer sur le bouton droit sur le bouton radio auquel on désire affecter une macro quand on le sélectionne. On peut même également affecter une macro au groupe de contrôles, mais c'est idiot, c'est une macro qui s'exécutera quand on cliquera sur la bordure de ce groupe d'options, et pas chaque fois qu'on sélectionne une option, quelle qu'elle soit.

Bouton de commande

Comme tous les contrôles de formulaire, il est possible d'affecter une macro à un bouton de commande simplement en cliquand avec le bouton droit de la souris et en choisissant "Affecter une macro". Il faut alors choisir une macro existante. En l'occurrence, ce sera quand on va cliquer sur le bouton que la macro va s'exécuter. Pour les contrôle sde formulaires, on n'a pas le choix d'autres événements. Par exemple, on ne peut pas affecter une macro quand on double-clique sur le bouton, ou simplement quand la souris passe par dessus.

Liste de choix et liste déroulante

Lorsque vous créez une de ces listes, vous dvez déteminer 2 choses : Dans quelle plage de cellules elle doit se fournir pour faire ses propositions, et dans quelle cellule elle doit inscrire le choix de l'utilisateur. Ces choses sont définissables en cliquant avec le bouton droit sur ces zones de liste. Attention : Dans la cellule de résultat de la liste, ce sera l'index (le numéro d'ordre) qui va être inscrit. Reportez vous aux explications du groupe d'options ici plus haut pour de plus amples renseignements sur la fonction Choisir.

Ascenseur vertical et Compteur

Alors que les listes déroulantes permettent de choisir du texte dans une liste, et de renvoyer un numéro dans une cellule, l'ascenseur vertical et le compteur, eux, ne proposent pas de texte à choisir mais simplement permettent de choisir une valeur entre X et Y. X et Y étant les valeurs les plus basses et les plus hautes possibles à sélectionner. Comme d'habitude, la cellule résultant du choix de l'utilisateur et les limites supérieures et inférieures sont paramétrables an cliquant sur le bouton droit, et en choisissant Format de contrôle/Contrôle.

Exercice pratique

Nous allons reprendre l'exemple du choix des couleurs :

Le résultat de l'exercice est d'obtenir en B4 Bleu, Rouge ou Vert dans leur couleur respective, comme ceci :

De plus, quand on sélectionne rouge, il faut que nous ayons un message "Attention ! Le rouge est chaud !"

Marche à suivre :

  1. Fermez tous les classeurs Excel, et placez-vous dans un nouveau classeur
  2. Il s'agit d'abord de créer le goupe d'option. Créez un groupe d'option comme dans l'exemple
  3. Mettez-lui comme dans l'exemple comme titre "Choisissez une couleur"
  4. Créez 3 boutons radio, que vous appellerez Bleu, Rouge et Vert, comme dans l'exemple
  5. Cliquez avec le bouton droit sur n'importe lequel de ces boutons radio, et choisissez "Format de contrôle"
  6. Dans l'onglet Contrôle, Cellule liée : Définissez B3. Cette propriété sera valable pour les 3 boutons radio (heureusement...)
    A présent, nous avons fait la première étape : Le numéro d'ordre (1=Bleu, 2=Rouge, 3=Vert) est affiché dans B3 à chaque fois que l'utilisatuer clique sur un bouton radio.
    Nous allons maintenant nous occuper d'afficher le nom de la couleur en B4
  7. Dans la cellule B4, écrivez la formule :
    =CHOISIR(B3;"Bleu";"Rouge";"Vert")
    Cette formule écrit Bleu, Rouge ou Vert selon la valeur de B3. Pour en savoir plus sur la fonction Choisir, consultez l'aide en ligne. J'insiste bien sur le fait que cette fonction n'a strictement plus rien a voir avec les boutons radio. C'est simplement une "traduction" de la cellule B3
  8. La cellule B3 n'ayant plus besoin d'être visible, mais étant utile pour la fonction Choisir, j'ai choisi dans l'exemple de l'écrire en grios clair, mais vous pouvez carrément l'écrire en blanc : On ne verra plus rien
    Il s'agit maintenant de colorer le texte de la cellule B4 en la couleur qui est choisie. Nulk besoin d'une macro pour faire ça. La fonction (Excel 2000 seulement) Mise en forme conditionnelle ira très bien
  9. Sélectionnez B4
  10. Faites Format/Mise en forme conditionnelle
  11. Condition 1 : "La valeur de la cellule" "est égale à" "Bleu", cliquez sur format, et choisissez Bleu
  12. Cliquez sur Ajouter>>
  13. Condition 2 : "La valeur de la cellule" "est égale à" "Rouge", cliquez sur format, et choisissez Rouge
  14. Cliquez sur Ajouter>>
  15. Condition 3: "La valeur de la cellule" "est égale à" "Vert", cliquez sur format, et choisissez Vert
  16. Cliquez sur OK
    Passons à la dernière étape : Il s'agit d'afficher à l'utilisateur un message "Attention! Le rouge est chaud !" quiand il clique sur Rouge. Il s'agit d'une macro que nous allons créer de toutes pièces, que nous nommerons MessageChaud
  17. Faites Outils/Macros/Visual Basic Editior
  18. Ecrivez la macro suivante :
    Sub MessageChaud ()
    MsgBox "Attention, le rouge est chaud !"
    End Sub
  19. Quittez Visual Basic et revenez dans Excel
  20. Cliquez avec le bouton droit sur le bouton Radio Rouge, et choisissez Affecter une macro
  21. Sélectionnez la macro que vous venez de construire MessageChaud, et OK

Et voilà ! Si tout s'est bien passé, quand vous cliquez sur Bleu ou vert, il ne se passe rien, mais en cliquant sur Rouge, vous devriez avoir un message "Attentiin Le rouge est chaud"

PS : Lorsque vous avez utilisé la mise en forme conditionnelle, vous avez peut-être remarqué que la limite des conditions était de 3. C'est à dire que si nous avions eu 5 ou 6 couleurs à choix, nous aurions été bien en peine de l'appliquer. Dans ce cas, nous aurions recouru à une macro, plus complexe qu'un seimple MsgBox, qui aurait coloré les caractères de B4 en fonction de son contenu.