PrecedentSuivant

VBA pour Excel

VBA pour Excel - Concepts de programmation

Sur cette page

Qualités d'un programme
Nature d'un programme
Composantes d'un programme
Sub ou Function?
Composition d'un module VBA

Caractéristiques d'un bon programme

Un programme informatique est un peu comme une recette de cuisine. Il requiert des ingrédients (données, variables, objets), contient une série de manipulations à faire avec ces ingrédients (instructions VBA) en utilisant des outils plus ou moins performants (VBE, Excel, Windows) et donne un résultat quelquefois plus intéressant que les ingrédients pris séparément.

Il y a de bonnes recettes, et de moins bonnes recettes. Il en est de même pour les programmes.

Un bon programme:

Très peu de programmes disponibles sur le marché actuel répondent à ces critères.
Lorsque vous aurez terminé l'écriture d'un programme, demandez-vous s'il répond aux quatre critères de façon satisfaisante pour l'usage prévu.

Une suggestion dès le départ: gardez vos programmes simples.

Types de programme

Du point de vue de l'utilisation (et donc de la programmation), un programme VBA Excel peut être:

-L'automatisation d'une série d'opérations qu'on peut faire manuellement dans Excel: la  procédure SUB.
-Une fonction Excel que les programmeurs Microsoft n'ont pas prévue: la procédure Function (fonction personnalisée).
-Une boîte de dialogue qui permet des échanges avec l'utilisateur autrement que par les moyens prévus par les programmeurs Microsoft: le  formulaire.
-La création d'une classe.

On trouve un exemple de chacun (sauf la création de classe) dans la page Introduction du présent tutoriel.

Composition d'un module VBA

Une module VBA se compose des trois éléments suivants:

  1. L'instruction Option Explicit, qui force la déclaration explicite des variables.
  2. Des déclarations de variables de niveau module.
  3. Une ou des procédures (programmes):
     

Une procédure doit toujours être encadrée par les instructions Sub...End Sub ou Function ... End Function.

[Private | Public] [Static] Sub nom [(liste de paramètres)]
    [instructions]
    [Exit Sub]
    [instructions]
End Sub

Où:

-Public Indique que la procédure Sub est accessible à toutes les autres procédures dans l'ensemble des modules. Valeur par défaut.
-Private Indique que la procédure Sub n'est accessible qu'aux autres procédures du module dans lequel elle a été déclarée.
-Static Indique que les valeurs des variables locales de la procédure Sub sont conservées entre les appels.En l'absence de Static, les variables sont réinitialisées à chaque exécution de la procédure. Static est très rarement nécessaire.
-nom Nom de la procédure Sub. Doit especter les règles des noms de variables.
-Liste de paramètres Liste de variables représentant des paramètres qui sont passés à la procédure Sub lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules. Chaque paramètre doit être déclaré dans la forme suivante:
[Optional] [ByVal | ByRef] [ParamArray] nom[( )] [As type] [=défaut]
où:

-Optional indique que ce paramètre n'est pas obligatoire. S'il est utilisé, tous les paramètres suivants doivent l'être aussi.
-ByRef indique que si la valeur du paramètre est modifiée dans la procédure, elle le sera aussi dans la procédure appelante.

ATTENTION, en VBA ByrRef est la valeur par défaut, au contraire de la plupart des langages de programmation.

-ByVal  indique que si la valeur du paramètre est modifiée dans la procédure, cela n'affecte pas sa valeur dans la procédure appelante.
-ParamArray Indique que le paramètre suivant est un tableau. ParamArray ne peut précéder que le dernier paramètre de la liste.
-Nom nom du paramètre, doit respecter les règles des noms de variables.
-type  type du paramètre.
-défaut constante initialisant un paramètre optionnel (Optional)

-instructions Tout groupe d'instructions à exécuter dans la procédure Sub.
-Exit Sub Instruction VBA permettant de terminer l'exécution de la procédure avant la fin.
-End Sub Instruction délimitant la fin de la procédure Sub.

 

[Private | Public] [Static] Function nom [(liste de paramètres)] [AS type]
    [instructions]
    [nom= expression]
    [Exit Function]
    [instructions]
    [nom= expression]
End Function

Où:

-Public Indique que la procédure Function est accessible à toutes les autres procédures dans l'ensemble des modules.
-Private Indique que la procédure Function n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée.
-Static Indique que les valeurs des variables locales de la procédure Sub sont conservées entre les appels.En l'absence de Static, les variables sont réinitialisées à chaque exécution de la procédure. Static est très rarement nécessaire.
-nom Nom de la procédure Function. Respecte les règles des noms de variables.
-Liste de paramètres Liste de variables représentant des paramètres qui sont passés à la procédure Sub lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules. Chaque paramètre doit être déclaré dans la forme suivante:
[Optional] [ByVal | ByRef] [ParamArray] nom[( )] [As type] [=défaut]

où:

  • Optional indique que ce paramètre n'est pas obligatoire. S'il est utilisé, tous les paramètres suivants doivent l'être aussi.
  • ByRef indique que si la valeur du paramètre est modifiée dans la procédure, elle le sera aussi dans la procédure appelante. ATTENTION, en VBA ByRef est la valeur par défaut, au contraire de la plupart des langages de programmation.
  • ByVal  indique que si la valeur du paramètre est modifiée dans la procédure, cela n'affecte pas sa valeur dans la procédure appelante.
  • ParamArray Indique que le paramètre suivant est un tableau. ParamArray ne peut précéder que le dernier paramètre de la liste.
  • Nom nom du paramètre, respectant les règles des noms de variables.
  • type  type du paramètre.
  • défaut constante initialisant un paramètre optionnel (Optional)
-Type Type de la valeur retournée par la procédure Function.
-instructions Tout groupe d'instructions à exécuter dans la procédure Function
-expression  Valeur retournée par la procédure Function.
-Exit Function Instruction VBA permettant de terminer l'exécution de la procédure avant la fin.
-End Function Instruction délimitant la fin de la procédure Function.

Sub ou Function?

Une procédure Sub sans paramètre obligatoire:

-Ne retourne pas de valeur.
-Peut modifier le contenu de la feuille Excel.
-Peut être associée à un objet (bouton, graphique) dans la feuille Excel et exécutée lorsque l'objet est cliqué.

Une procédure Sub avec paramètre obligatoire:

-Ne retourne pas de valeur.
-Peut être exécutée lorsqu'un événement Excel se produit (ouverture, fermeture, modification de cellule...).

Une procédure Function:

-Retourne une valeur.
-Ne doit pas modifier la feuille de travail.
-Ne doit pas afficher de boîte de dialogue.
-Ne peut être utilisée que dans une formule Excel ou une procédure VBA.

Composantes d'un programme

Un programme VBA comporte un nom, de la documentation, des objets, des instructions et une gestion des erreurs:

-Un nom: Assignez toujours un nom qui décrit la nature de votre programme. Ça le rend plus facile à modifier.
-De la documentation: au minimum, indiquez dès la 2e ligne le nom de l'auteur et dès la 3e ligne le but du programme. N'hésitez pas à parsemer votre programme de commentaires qui vous permettront de mieux comprendre ce qu'il fait (et comment il le fait) quand vous voudrez modifier le programme dans un ou dix ans.
-Des objets: une recette contient des ingrédients, un programme contient des objets. Ces objets peuvent être:

-Des instructions: -Une gestion des erreurs: des instructions à exécuter lors que l'inattendu se produit.

Pour développer un programme, on utilise un environnement de développement. Cet environnement est le même pour tous les programmes de la suite Office: VBE (Visual Basic Editor).

Le code d'un programme VBA est enregistré dans un classeur, dans une feuille, dans un module ou dans un formulaire. Le tout est enregistré à l'intérieur du document Office. En Office 2007, les noms des documents contenant un programme VBA ont une extension spécifique (.xlsm au lieu de .xlsx).




 

Abonnez-vous à l'infolettre

Abonnez-vous à l'infolettre du site pour recevoir les dernières nouvelles et aussi des formations à votre courriel. Vous pouvez voir la liste des dernières infolettres ici.

Cliquez ici pour vous abonner à l'infolettre





Ce site est hébergé par 1&1.com