VBA: Créer les listes HTML à partir des cellules Excel

Si vous créez des sites internet, le code VBA suivant vous sera peut-être utile: il crée des listes HTML (donc la structure "<ul><li>élément 1</li><li>…</li></ul>") automatiquement à partir des chaînes de caractères, à partir du contenu des cellules ou le mélange des deux.

Le code VBA ci-dessous est présenté sous forme des fonctions qui sont donc facilement utilisables directement dans Excel en tant que "UDF" (User Defined Function). Il suffit de les copier dans votre projet VBA et vous pouvez les utiliser comme toutes les autres fonctions dans Excel.

Il ne s'agit pas d'un code qui crée le code pour des éléments mais bien d'une fonction qui retourne comme résultat la liste HTML complète (débute par <ul> et se termine par </ul>) en une chaîne de caractères facile à copier/coller là où vous en avez besoin.

VBA: création des Listes HTML
VBA: création des Listes HTML

Une liste HTML à partir du texte contenant les différents éléments

Vous pouvez utiliser le code suivant si vous avez les différent éléments dans une chaîne de caractères et qu'ils sont séparés par un séparateur spécifique. Cette fonction peut être la plus appropriée si vous voulez écrire les éléments directement "à la main".

Les arguments de cette fonctions sont le texte qui contient les éléments et le type de séparateur.

Le résultat en Excel donne ceci:

Fonction Excel pour créer une Liste HTML à partir du texte


Une liste HTML à partir d'une plage de cellules

Si vous souhaitez créer une liste HTML à partir d'une plage de cellules (par ex.: "A2:A15") contenant un élément par cellule, rien n'est plus simple. Le code de la fonction sera légèrement différent.

Comme argument de la fonction, il suffit d'indiquer la plage de cellules à utiliser et le tour est joué.

 

 

Ce qui nous donne en Excel:

VBA: Liste HTML à partir du contenu des cellules


Une liste HTML avancée – mélange de texte et contenu de cellules

Et finalement, pour les utilisateurs plus exigeants, voici le code qui vous permets de combiner les deux méthodes précédentes. Cette 3ème fonction (il s'agit en fait de deux fonctions pour plus de lisibilité) fait appel à ParamArray qui permet d'utiliser un nombre variable d'argument et qui peut également être utilisé pour "mélanger" les différents types de variables (ici String et Range).

C'est pourquoi cette fonction, la plus complète vous donne le maximum de flexibilité en ce qui concerne le type d'arguments et de leur nombre.

Pour illustrer l'utilisation de cette fonction, voici un exemple – qui vaut plus qu'une longue explication:

VBA: Liste HTML avancée
VBA: Liste HTML avancée (texte + cellules)

Et voici le code VBA…

 

Avant de terminer…

Pour les utilisateurs plus avancés: en modifiant le code de la fonction, il est possible d'ajouter des formats aux différents tags HTML<UL> et <LI> en ajoutant par exemple style="color: #22AA22;" Attention cependant à l'utilisation des guillemets en VBA. Le code VBA rassemblerait donc à ceci:

MonResultat = MonResultat & "<li style=""color: #aa22aa;"">" & Element.Value & "</li>"

Et si, dans le résultat final, vous voulez avoir un élément par ligne – il suffit d'ajouter le code pour un retour à la ligne Chr(13) & Chr(10) aux endroits appropriés

  • MonResultat = "<ul>" –> MonResultat = "<ul>" & Chr(13) & Chr(10)
  • MonResultat = MonResultat & "<li>" & Element.Value & "</li>" –> MonResultat = MonResultat & "<li>" & Element.Value & "</li>" & Chr(13) & Chr(10)

Pour aller plus loin en VBA…

Voici quelques autres articles qui pourraient vous intéresser et vous être utiles.

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *