Une macro VBA qui crée et met à jour le menu de votre site Web

Le menu qui sert à naviguer à l'intérieur d'un site Web est souvent un casse-tête :
- il doit être facilement lisible et en même temps permettre l'accès à un grand nombre de pages différentes
- il doit rester visible sur toutes les pages du site
- il doit être mis à jour facilement (de préférence sans recopier le menu sur chaque page)
- et dans la mesure du possible, il ne doit pas disparaitre lors des "scrollings" (défilements de l'écran vers le bas ou la droite).

Ces problèmes sont bien résolus par la technique des frames qui découpent l'écran (horizontalement et / ou verticalement) en plusieurs fenêtres indépendantes.
On peut ainsi placer par exemple un menu principal dans un frame horizontal en haut de l'écran et un menu secondaire dans un frame vertical à gauche de l'écran.
Cette technique très efficace fait actuellement l'object de critiques, ses détracteurs insistant sur la non compatibilité avec certains navigateurs (anciens) et sur des problèmes rencontrés lors du référencement par des moteurs de recherche automatiques.
Il est vrai qu'un lien pointant vers une page isolée d'un site fonctionnant avec des frames risque de perdre beaucoup de son intérêt, puisque la page est sortie de son contexte.

De nombreux sites récents ont completement renoncé aux frames et affichent un menu répeté en tête de chaque page, menu qu'il faut aller rechercher à chaque fois qu'on arrive en bas de page.

Le problème peut au moins partiellement être résolu par JavaScript (cliquer pour voir le principe de base).
Pour simplifier la création et la mise à jour des menus (surtout si l'utilisateur n'est pas familier de JavaScript), on peut utiliser une macro VBA qui traduit en JavaScript les données (noms et liens des menus et sous-menus) saisies dans une page Excel.

Le fichier Excel proposé au téléchargement contient une page Excel de saisie et la macro permettant de créer et mettre à jour le menu JavaScript.

Le menu est créé sous forme de fichier texte "menu.js".
Il suffit d'y faire référence dans une page Web (par <SCRIPT SRC="menu.js"></SCRIPT> après la balise <BODY>) pour le faire apparaître en tête de page.

La page Excel se présente sous la forme d'un simple tableau dans lequel il faut saisir les noms des menus, les noms des sous-menus et les adresses des pages Web vers lesquelles pointent les liens des sous-menus :

nom du menu nom du sous-menu adresse visée par le sous-menu ouverture dans une nouvelle fenetre
(cochez)
chemin (facultatif) nom du fichier
<I>retour</I>      
  retour menus.html http://jacxl.free.fr/cours_xl menus.html  
  cliquez ici pour revenir dans le chapitre JS http://jacxl.free.fr/cours_xl cours_xl_jac.html#menu_style x
quelques liens_xl      
  la FAQ du mpfe   http://dj.joss.free.fr/faq.htm x
  le site de Flo   http://disciplus.simplex.free.fr/ x
  le site de LL   http://longre.free.fr/ x

Dans l'exemple ci-dessus, le menu apparaitra sous forme d'une barre horizontale comportant deux entrées, "retour" et "quelques liens xl".
En passant la souris sur l'une des entêtes du menu, on fait apparître le sous-menu correspondant, qui permet d'accéder aux pages cibles.

Le classeur Excel contient en outre un onglet permettant de définir divers paramètres comme l'adresse et le nom du fichier JavaScript, et divers éléments de présentation (couleurs, formats, images de fonds...).
On peut également ajouter un logo qui sera affiché en bas à droite de la page Web contenant le menu.

Une fois le contenu et les différents paramètres du menu définis, il suffit de cliquer sur un bouton pour lancer la macro qui va éditer le menu.

Rien n'empêche de remplacer une entrée de menu ou de sous-menu par une image (sous réserve que sa taille ne soit pas démesurée) : Il suffit de remplacer (dans la page Excel) le titre du menu par <IMG SRC=\"truc.gif\" height=20>.
D'autres balises HTML peuvent être utilisées dans les titres de menus ou sous-menus, par exemple <BR> pour passer à la ligne, <FONT COLOR=\"red\">toto<FONT> pour écrire toto en rouge, <A HREF=\"truc.html\">truc</A> pour créer directement un lien.
De même, le lien peut pointer sur une fonction JavaScript plutôt que sur une page html, par exemple : javascript:alert(\"bonjour\") dira bonjour quand on cliquera sur le sous-menu correspondant. De même, javascript:document.write(\"au revoir\") remplacera la page en cours par une page ne contenant que "au revoir".
Le sous-menu peut aussi pointer vers des adresses mail (on peut ainsi créer un carnet d'adresses) : mailto:zaza@cats.fr.

Cliquez ICI pour voir un exemple de menu.
Cliquez ICI pour télécharger le fichier Excel contenant les formulaires de saisie et la macro.


Remarques :
- La macro a été conçue pour fonctionner avec IE4 et plus.
Le menu sera affiché sans problème avec Netscape, mais certaines fonctionnalités seront perdues (pas de logo, pas de scrolling...).
- La macro a pour rôle principal de recopier du code JavaScript stocké dans des onglets masqués et de leur adjoindre les données saisies par l'utilisateur.
Il est donc facile de modifier le code JavaScript pour adapter le menu à des besoins particuliers.