Accueil | Ce site | CV | Excel | Livre d’or | Macros XL4 | Modèles | VBA

 La reproduction du code VBA sur les pages de ce site

Pour reproduire du code VBA sur une page Web, 2 options sont possibles : faire des copies d’écran ou reproduire le code VBA en tant que texte.

L’emploi de copies d'écran présente certains avantages : il s'agit par définition, d’une reproduction précise de l’environnement de développement VBA, qui montre l’indentation du code et les couleurs utilisées dans l’éditeur. Sur un plan pédagogique, c’est l'idéal. Cependant, ce choix présente également plusieurs inconvénients :

La réalisation des copies d’écran et leur compression à un format adapté au Web (en général .gif) consomme beaucoup de temps.


Fig. 1 - Exemple de copie d’écran montrant une boucle
telle qu’elle se présente dans l’éditeur VBA.

Même après avoir été compressées, les images sont plus lourdes (en taille de fichier) que le texte correspondant, ce qui ralentit le chargement des pages, en particulier pour tous ceux qui ne disposent pas d’un accès rapide à l’Internet.

L’illustration ci-dessous par exemple pèse déjà 16 Ko. Les utilisateurs de modem accèdent à Internet à 56 Kbit au mieux, soit 7 Ko (56 que divise 8, car un octet représente 8 bits). Cela signifie que dans des conditions optimales, le seul chargement de l’image de la figure 2 nécessitera plus de 2 secondes, et pourra atteindre couramment 4 à 5 secondes. C'est trop long.


Fig. 2 - Exemple de copie d’écran montrant une boucle telle qu’elle se présente dans l’éditeur VBA.

Enfin, si certaines lignes du code reproduit sont très longues, l’illustration peut nécessiter un défilement horizontal pour les internautes qui utilisent un petit écran ou emploient une basse résolution (800 pixels par 600, voire moins).

Il m’a donc paru plus raisonnable de faire apparaître le code VBA en tant que texte, directement dans les pages Web. Toutefois, un simple Copier/Coller ne suffit malheureusement pas.

En effet, voici comment apparaît le code correspondant à la figure 1 :

Sub ReportDonnees()
' Report des valeurs stockées dans Mat()
Dim i As Integer
With ActiveCell
For i = 0 To 9
.Offset(i) = Mat(i)
Next i
End With
End Sub

3 éléments ont été perdus :

  1. L’indentation qui facilite grandement la lecture du code, en insérant plus ou moins d’espace au début de certaines lignes, à l’aide de tabulations.
  2. L’emploi d’une police non proportionnelle (où tous les caractères, i comme W, consomment la même largeur à l’écran), qui fait ressortir qu’il s’agit de code.
  3. Les couleurs.

Il est possible de modifier manuellement le code HTML, mais c'est long et fastidieux. En particulier, le rétablissement des couleurs doit se faire individuellement pour chacun des mots. Le risque d’erreurs et/ou d’oublis n’est pas négligeable dès que le code à reproduire atteint une certaine ampleur.

Une tâche qui peut se faire manuellement, mais est longue, fastidieuse et comporte un risque d’erreurs et/ou d’oublis correspond exactement à ce qu’il faut essayer d’automatiser.

C’est pourquoi j’ai écrit un programme en VBA sous Word qui génère directement le code HTML à insérer dans la page Web. Voici le résultat obtenu :

Sub ReportDonnees()
' Report des valeurs stockées dans Mat()
Dim i As Integer
        With ActiveCell
                For i = 0 To 9
                    .Offset(i) = Mat(i)
                Next i
        End With
End Sub

Le code reproduit ressemble à celui de la figure 1, sans les inconvénients des copies d’écran.