Médiaforma

VBA Excel – L’application Microsoft Visual Basic pour Applications

Partagez cet article sur vos réseaux

Dans cet article, vous allez faire connaissance avec l’application Microsoft Visual Basic for Applications, dans laquelle vous développerez vos projets VBA.

Pour accéder à cette fenêtre, basculez sur l’onglet Développeur du ruban et cliquez sur l’icône Visual Basic dans le groupe Code :

Si vous n’êtes pas réfractaire aux raccourcis clavier, vous pouvez également appuyer sur Alt + F11 pour parvenir au même résultat.

Examinons la fenêtre Microsoft Visual Basic pour Applications :

Il se peut que votre fenêtre soit légèrement différente. Les volets en trop ou manquants peuvent être affichés/supprimés avec les commandes du menu Affichage.

Premiers pas en VBA

Examinez le volet Explorateur de projets.

Si vous n’avez pas encore défini de macros dans le classeur en cours, vous allez créer un module. C’est en effet dans ce module que les instructions VBA rattachées au classeur en cours seront définies. Lancez la commande Module dans le menu Insertion. Le dossier Modules et l’entrée Module1 sont ajoutés dans l’explorateur de projets et une feuille blanche apparait dans la partie droite de la fenêtre :

Si vous avez défini une ou plusieurs macros, le dossier Modules et l’entrée Module1 doivent apparaître dans ce volet.

Supposons que vous ayez défini la macro DateLongue, comme indiqué dans la section « Une première macro ». Vous devriez avoir le code suivant dans le module 1 :

Sub DateLongue()

'

' DateLongue Macro

'

'

    Selection.NumberFormat = "[$-x-sysdate]dddd, mmmm dd, yyyy"

End Sub

Sur la première ligne, vous retrouvez le nom de la macro DateLongue, précédé du mot sub, pour subroutine, ou procédure en français. La procédure se termine par les mots End Sub. Le code de la procédure DateLongue se trouve entre les mots Sub et End Sub.

Dans cet exemple précis, vous trouvez plusieurs lignes de commentaires, qui commencent par une apostrophe :

'

' DateLongue Macro

'

'

Ainsi qu’une ligne qui vous laisse peut-être perplexe :

Selection.NumberFormat = "[$-x-sysdate]dddd, mmmm dd, yyyy"

Il s’agit d’une notation objet, car oui, VBA est un langage objet !

Si vous n’avez aucune idée de ce qu’est un langage objet, cliquez sur ce lien (renvoie vers la section « Si vous n’avez aucune idée de ce qu’est un langage objet »).

Cette ligne de code définit la propriété NumberFormat de l’objet Selection. En d’autres termes, le format des cellules sélectionnées. La chaîne affectée à cette propriété a été générée par l’enregistreur de macros. Elle indique que les dates doivent être affichées au format long :

  • dddd : nom du jour au format long
  • mmmm : nom du mois au format long
  • dd : numéro du jour
  • yyyy : année au format long

La première partie du format ([$-x-sysdate]) indique que la date sera affichée en fonction de la langue système. Ici, il s’agit du français. La date 12/08/2017 sera transformée en samedi 12 août 2017.

Si vous n’avez aucune idée de ce qu’est un langage objet

Un petit aparté pour ceux qui ne savent pas ce qu’est un langage objet et/ou qui n’ont jamais programmé en objet.

Eh bien, comme son nom l’indique, un langage objet manipule … des objets ! Vous pouvez considérer un objet comme une boîte qui possède des propriétés et des méthodes. Les propriétés définissent les caractéristiques de l’objet et les méthodes agissent sur l’objet.

Si nous prenons le cas particulier d’Excel, Les programmes VBA manipulent un ensemble d’objets mis à disposition du programmeur par Excel : des cellules, des lignes, des colonnes, des plages sélectionnées, des feuilles de calcul et des classeurs.

Propriétés

Pour accéder à une propriété, vous écrirez quelque chose comme ceci :

Objet.Propriété

Objet est le nom de l’objet et Propriété est la propriété à laquelle vous voulez accéder.

Vous pouvez lire la valeur d’une propriété et l’afficher dans une boîte de dialogue avec une instruction Msg. Par exemple :

Msg Objet.Propriété

Ou encore affecter une valeur à une propriété avec un simple signe = (égale à).

Si la valeur est numérique, il suffit de l’indiquer après le signe = :

Objet.Propriété = Valeur

Si la valeur est une chaîne de caractères, elle sera encadrée par des guillemets :

Objet.Propriété = "Valeur"

Méthodes

Pour appliquer une méthode à un objet, il suffit d’indiquer le nom de l’objet, suivi d’un point, suivi du nom de la méthode. Par exemple, pour basculer sur la feuille de calcul Feuil2 du classeur courant, vous appliquerez la méthode Activate à l’objet Worksheets(« Feuil2 ») :

Worksheets("Feuil2").Activate

Ou encore, pour sélectionner la cellule B5 dans la feuille courante, vous appliquerez la méthode Select à l’objet Range(« B5 ») :

Range("B5").Select

Et maintenant, tout le travail va consister à connaitre les objets d’Excel, leurs propriétés et leurs méthodes. Vous voyez que ce n’est pas si compliqué que ça !