I. Introduction

Certaines formes de base sont dynamiquement modifiables à l'aide de leur menu contextuel (menu apparaissant sur un click droit).

Par exemple : Dans le gabarit Formes de formulaire, on trouve une case à cocher qui peut être cochée ou décochée.

Image non disponible

Nous allons dans cet article apprendre à créer de telles formes.
L'objectif est de créer un feu tricolore dont on peut allumer ou éteindre les lumières.

Voici le résultat obtenu en suivant ce tutoriel :

Image non disponible

Remarque : Ce tutoriel a été réalisé avec la version 2000 de Visio.
Vous trouverez dans le tutoriel les petites différences pour les versions plus récentes 2003 ou 2007.

II. Création des formes géométriques

La première chose à faire est de créer une nouvelle forme de base.
Pour l'exemple, nous insérons cette forme dans un gabarit personnalisé.

Créons un nouveau gabarit :
Cliquez sur le menu Fichier --> Ouvrir un gabarit --> Nouveau gabarit.
(ou Fichier --> Formes --> Nouveau gabarit pour Visio 2003 ou 2007).
Cliquez avec le bouton droit sur la fenêtre du gabarit puis choisissez Nouvelle forme de base....
Choisissez un nom, par exemple : FeuTricolore, puis validez.
La forme vierge s'affiche dans la fenêtre du gabarit.

Image non disponible

Cliquez avec le bouton droit sur cette forme et sélectionnez Modifier la forme de base.
Une page de dessin vierge s'affiche, nous créons notre feu tricolore sur ce dessin.

Créez trois cercles l'un au-dessus de l'autre à l'aide de l'outil ellipse, puis un rectangle encadrant ces trois cercles.

Si besoin, pour faire apparaître la barre de dessin : Affichage => Barres d'outils => Dessin.

Pour le rectangle, sélectionnez Format --> Remplissage --> Aucun (à la place de Plein) afin de voir les cercles au travers de ce rectangle.
Pour les cercles, sélectionnez Format --> Remplissage --> Choisissez la couleur du feu.
Le dessin est fini :

Image non disponible

Pour faciliter le repérage des formes, renommez les :
Pour chaque forme : Click droit --> Format --> Spécial... --> Modifier le champ Nom.

Pour Visio 2007, vous devez activer le mode développeur : Outils => Options ... => Options Avancées => Exécuter en mode développeur

Nommons :
- le rectangle : FeuCadre
- le cercle du haut : FeuRouge
- le cercle du milieu : FeuOrange
- le cercle du bas : FeuVert

Une fois ajoutées à un dessin, ces formes peuvent être indépendamment sélectionnées et supprimées.
Commençons par protéger ces formes contre la suppression.
Pour chacune des quatre formes : Click droit --> Format --> Protection... --> Contre la suppression.
Ensuite, sélectionnez les quatre formes et cliquez bouton droit --> Forme --> Grouper.
Cela a pour effet de créer une forme globale regroupant toutes les formes simples.
Si vous cliquez sur le dessin, la première sélection est l'ensemble du dessin.
Ensuite si vous cliquez à nouveau vous pouvez sélectionner chacune des formes géométriques simples.
Vous pouvez regarder les sommets pour voir le type de sélection en cours.

Sélection d'un groupe :
Image non disponible

Sélection d'une seule forme simple
Image non disponible

Sélectionnez le groupe et renommez la forme correspondante : nommons la FormeGlobale.

III. Création du menu de coloriage du feu tricolore

Le menu doit être ajouté à la forme globale.
Assurez vous donc d'avoir sélectionné le groupe de forme.

Affichez alors la feuille ShapeSheet :
Dans le menu : Fenêtre --> Afficher la feuille ShapeSheet.
Vous pouvez encore vérifier la forme en cours de modification en regardant son nom dans la barre de titre :

Image non disponible

Le menu se paramètre dans la section Actions.
Par défaut cette section n'est pas créée.
Cliquez sur le bouton droit dans la fenêtre ShapeSheet puis Insérer une section..., cochez Actions et validez.

Voici la section Actions :

Image non disponible
Chaque ligne correspond à une entrée de menu.
L'Action est une fonction à exécuter lors du click sur l'entrée de menu.
Le Menu est le texte qui apparaît dans le menu.
Le Message s'affiche dans la barre de status lors du survol du menu.
Si Coché est égal à -1, alors l'entrée de menu est cochée.
Si Désactivé est égal à -1, alors l'entrée de menu est désactivée.

Nous voulons ajouter trois lignes dans le menu :
- Rouge pilotant l'affichage du feu rouge.
- Orange pilotant l'affichage du feu orange.
- Vert pilotant l'affichage du feu vert.

Pour la première ligne :
Cliquez sur la case Menu et écrivez le texte du menu : ="Rouge"
Cliquez sur la case Message et écrivez le message correspondant : ="Afficher/masquer le feu rouge"
Plus difficile ensuite : on souhaite que la propriété Coché change de valeur lorsqu'on clique sur le menu.
Dans la case Action, nous pouvons écrire une formule.
Cliquez dans la case Action, écrivez la formule =NON( puis cliquez sur la case Coché pour insérer son nom technique dans la formule et enfin refermez la parenthèse et validez (touche Entrée).

Si la formule n'est pas correcte, remplacez NON par NOT

L'Action est donc écrite ainsi : =NON(Actions.Checked) ou =NOT(Actions.Row_1.Checked) en fonction des versions.
Ce qui signifie que cette fonction renvoie l'inverse la propriété Coché du menu.
Si Coché=0, la fonction renvoie -1 (vrai).
Si Coché=-1, la fonction renvoie 0 (faux).
La formule écrite dans Action renvoie une valeur, mais ne modifie pas la propriété Coché.
Pour modifier la valeur de Coché, il faut donner à cette propriété la valeur renvoyée par la formule :
Cliquez dans la case Coché, écrivez "=" pour débuter une formule puis cliquez sur la case Action pour insérer son nom technique dans la formule et enfin validez (touche Entrée).
Un message d'avertissement apparaît car on a mis en place une référence circulaire :

Image non disponible
En effet la formule dans Action lit la propriété Coché et cette même propriété lit le résultat de la formule.
Vous pouvez valider le message sans crainte, Visio gère correctement cette référence circulaire.
La formule de la propriété Coché est donc : =Actions.Action (ou =Actions.Row_1.Action))
Ainsi la propriété Coché de notre menu va changer à chaque click.

Répétez l'opération pour les deux autres lignes de menu; pour insérer une ligne, cliquez sur le bouton droit puis Insérer une ligne après...

Voici la section Actions complétée :

Image non disponible

La même section vue sous Visio 2007 en anglais :

Image non disponible

Refermez la fenêtre ShapeSheet.
Cliquez sur la forme avec le bouton droit pour tester le menu.

Image non disponible

A ce stade, la sélection des entrées du menu fonctionne.
Il nous reste à déterminer les conditions d'affichage des couleurs des feux.

IV. Gérer l'affichage des feux en fonction des éléments de menu sélectionnés

Suite à la mise en place du menu, nous avons à notre disposition trois propriétés dans la forme FormeGlobale.
- Actions.Checked ou Actions.Row_1.Checked détermine si le feu rouge est sélectionné
- Actions.Checked[2] ou Actions.Row_2.Checked détermine si le feu orange est sélectionné
- Actions.Checked[3] ou Actions.Row_3.Checked détermine si le feu vert est sélectionné

Pour chacun des trois feux, nous allons remplir ou non le cercle correspondant.

Commençons par le feu rouge :
Sélectionnez la forme FeuRouge et ouvrez sa fenêtre ShapeSheet (Fenêtre --> Afficher la feuille ShapeSheet).
Recherchez la section Géométrie 1.
Si elle n'est pas affichée : cliquez sur le bouton droit puis Insérer une section..., cochez Géométrie et validez.

Image non disponible
On remarque dans cette section une propriété nommée Géométrie1.NoFill.
Si cette propriété est égale à VRAI (=-1), alors la forme n'a aucun remplissage.
Servons nous de cette propriété pour conditionner le remplissage du feu rouge à la valeur de la propriété Coché de notre forme globale.
Il nous faut atteindre la valeur d'une propriété de la forme globale :
Son nom technique est Sheet suivi de son identifiant. L'identifiant est visible dans les propriétés spéciales de la forme globale : Click droit --> Format --> Spécial... --> ID.

Image non disponible
Ici l'ID est 9, donc le nom technique de la forme globale est Sheet.9.
Cliquez sur la cellule à droite de Géométrie1.NoFill et écrivez la formule =NON(Sheet.9!Actions.Checked).
NoFill signifie Non rempli : la fonction NON (ou NOT) est donc utilisée pour inverser la valeur de la propriété Coché.

Image non disponible

Procédez de même pour les deux autres feux avec comme formule :
- =NON(Sheet.9!Actions.Checked[2]) pour le feu orange.
- =NON(Sheet.9!Actions.Checked[3]) pour le feu vert.

Adaptez les formules à votre version, par exemple pour Visio 2007 en anglais : =NOT(Sheet.9!Actions.Row_1.Checked) pour le feu rouge.


Vous pouvez tester directement la forme dans le dessin en cours en sélectionnant les entrées de menu.


Image non disponible

Pour enregistrer les modifications, fermez la fenêtre de dessin de la forme, validez la mise à jour, puis enregistrez le gabarit.

V. Conclusion et Téléchargement

La page ShapeSheet offre beaucoup de possibilité dans la création de formes personnalisées.
Ce tutoriel en est une première approche.

Vous pouvez télécharger ici le gabarit créé en suivant ce tutoriel, au format Visio 2000.