Devenez un meilleur intégrateur avec Excel

J’ai souvent eu à intégrer des pages statiques avec des longues listes de liens. La plupart du temps, les chefs de projets utilisent Excel (ou OpenOffice, LibreOffice ou Google Docs) pour rassembler et partager tous ces liens. Typiquement, on va y trouver une colonne avec l’intitulé du lien, et un autre avec l’URL du lien.

Un exemple de tableau de liens sous Google Docs

A partir de ces liens, je vais devoir générer le code HTML suivant :

<ul>
<li><a href="http://www.hteumeuleu.fr/chrome-sous-android-ne-supporte-pas-flash/">Chrome sous Android ne supporte pas Flash</a></li>
<li><a href="http://www.hteumeuleu.fr/cout-grandissant-developpement-interactif/">Le coût grandissant du développement interactif</a></li>
<li><a href="http://www.hteumeuleu.fr/produire-c-est-decourager-la-creativite/">« Produire, c’est décourager la créativité. »</a></li>
<li><a href="http://www.hteumeuleu.fr/statistiques-google-janvier-2012/">Les statistiques de Google+ en janvier 2012</a></li>
</ul>

Une façon basique d’arriver à ce résultat serait d’intégrer chaque lien un par un, en copiant l’intitulé du lien, en le collant dans son éditeur de code, puis en copiant l’URL du lien, et en la collant dans son éditeur de code. Mais clairement, c’est long, fastidieux et très pénible. Et ce n’est clairement pas adapté pour des documents de plusieurs centaines de liens.

Voici une façon beaucoup plus simple d’arriver au même résultat en utilisant de simples formules dans un tableur. Ces formules fonctionnent en principe dans n’importe quel tableur (Excel, OpenOffice, LibreOffice, Google Docs), mais selon la langue du logiciel il est possible que vous deviez traduire le nom des fonctions utilisées.

Dans un tableur, pour concaténer deux valeurs de cellules ou deux chaînes de caractères, on va utiliser l’opérateur & (ex : A1 & A2). Une chaîne de caractère doit être délimitée par deux double guillemets anglais (ex : A1 & « toto »). Pour échapper des double guillemets dans une chaîne de caractère, il faut écrire deux double guillemets. Voici alors la formule qu’on utiliserait dans une colonne C pour générer la balise d’un lien dont le contenu se trouve dans la colonne A, et l’URL dans la colonne B.

="<li><a href=""" & B1 & """>" & A1 &"</a></li>"

Si vous avez un document bien formaté, vous pouvez dores et déjà étendre cette formule à tout votre colonne, et vous n’aurez plus qu’à copier/coller le tout dans votre page HTML ! Mais souvent, les documents de ce genre sont remplis d’annotations, avec des lignes vides ou commentées pour structurer un peu le document. On va alors peaufiner un peu notre formule en ajoutant un traitement conditionnel avec la fonction IF (ou SI en français). Cette fonction prends 3 paramètres : IF(test; valeur si vrai; valeur si faux). Afin de s’assurer qu’on doit bien générer du HTML pour la ligne en cours, on va vérifier si la cellule de la colonne URL n’est pas vide. Si c’est le cas, on génère bien le HTML, sinon on n’affiche rien. On obtient alors la formule suivante :

=IF(B1<>""; "<li><a href=""" & B1 & """>" & A1 & "</a></li>" ;"")

Pour finaliser tout ça, je peux également insérer une nouvelle formule dans une cellule vide qui va concaténer toutes mes balises <li>, et les englober dans une balise <ul>. Pour concaténer rapidement toute une plage de cellule, on va utiliser la fonction CONCATENATE(). Ça donne quelque chose comme ça :

=CONCATENATE("<ul>"; C3:C56; "</ul>")

Et voilà ! Vous n’avez plus qu’à copier le contenu de cette cellule dans votre page HTML. J’ai créé sur Google Docs un document d’exemple pour que vous puissiez voir le résultat directement.

  1. François "cahnory" Germain, le

    Marrant, j’ai eu à faire ça pas plus tard que la semaine dernière. N’utilisant pas des masses excels j’en suis arrivé à une petite formule à base de concatenate.
    Il n’y avait par contre pas de structure conditionnelle et il a donc fallu un petit nettoyage après coup… mais en même temps il y avait aussi le cas de colonnes contenant plusieurs adresses, des emails,… j’ai l’impression que si dans une chaine il faut apporter un peu de réflexion, elle est reportée jusqu’au dev :D.

  2. shavounet, le

    Ou alors, un petit script PHP qui lit le CSV + un petit foreach et le tour est joué :)

    #trollingMonday

  3. Nico, le

    Huhu, je fais le même genre de choses pour les redirections htaccess quand y a des refontes. :)

  4. roscomm, le

    Ouep ! Méthode complètement validé de mon côté :) Je fais la même, et pour titiller, oué je sais.. moi je rajoute un chtit « title » dans le lien…. ( j’entends déjà le reply sur le « value » du title en sEO nianainia :)..) Bon article.

  5. mansuetus, le

    Perso, je m’arrête avant le concatenate :
    je tape dans l’éditeur de code, je sélectionne toute la plage dans excel, Ctr-C, Et Ctrl-V dans l’éditeur entre les deux balises.

    (si votre éditeur part en sucette à cause des formats excel, vous pouvez passer par le bloc notes : on colle le tout dans le bloc note, on re-sélectionne, on copie tout, puis on peut coller dans l’éditeur).

  6. Bartdude, le

    Perso quand je sais me passer d’excel, je le fais. En l’occurence un bon éditeur texte avec des possibilités de macro ou de find/replace à base de Regex et le tour est joué.

    Cela dit ta conclusion est valable pour plein de métiers et pas seulement avec excel : quand on dispose des outils pour automatiser les tâches répétitives, on devient plus productif, après à chacun ses petits trucs :-)