Médiaforma

All posts in VBAExcel

Si vous préférez, vous pouvez définir une icône dans le ruban pour exécuter la macro.

Lancez la commande Options dans le menu Fichier. La boîte de dialogue Options Excel s’affiche. Sélectionnez Personnaliser le ruban dans la partie gauche de la boîte de dialogue (1). Cliquez sur Nouvel onglet (2) pour définir un nouvel onglet dans le ruban. Cliquez sur cet onglet puis sur le bouton Renommer pour lui donner un nom plus approprié que “Nouvel onglet”. Ici par exemple, nous appellerons le nouvel onglet Macros. Cliquez sur Nouveau groupe puis sur Renommer. Donnez le nom Dates au nouveau groupe :

Il ne vous reste plus qu’à insérer une icône qui représente la macro dans le groupe Dates. Sélectionnez Macros (1) dans la liste déroulante. Assurez-vous que le groupe Dates est sélectionné dans la zone de liste de droite, cliquez sur DateLongue (2) puis sur Ajouter (3). Si nécessaire, vous pouvez cliquer sur Renommer (4) pour choisir l’icône de la macro DateLongue :

Fermez la boîte de dialogue Options Excel en cliquant sur OK. La macro DateLongue est accessible dans le groupe Dates, sous l’onglet Macros du ruban :


Pour accéder facilement à une macro, vous pouvez lui affecter une icône dans la barre d’outils Accès rapide. Lancez la commande Options dans le menu Fichier. La boîte de dialogue Options Excel s’affiche. Sélectionnez Barre d’outils Accès rapide dans la partie gauche de la boîte de dialogue (1). Sélectionnez Macros dans la liste déroulante Choisir les commandes dans les catégories suivantes (2). Cliquez sur la macro dans la zone de liste inférieure (3), puis cliquez sur Ajouter (4) :

Si l’icône par défaut ne vous convient pas, vous pouvez la changer en cliquant sur le bouton Modifier, dans la partie inférieure droite de la boîte de dialogue :

Choisissez une icône et cliquez sur OK. Il ne vous reste plus qu’à cliquer sur OK pour ajouter l’icône de la macro dans la barre d’outils Accès rapide :


Définition d’une première macro

A titre d’exemple, nous allons définir une macro qui met en forme des dates :

Avant de sélectionner l’onglet Développeur et de cliquer sur l’icône Enregistrer une macro dans le groupe Code, sélectionnez les cellules dont le format doit être changé :

Puis cliquez sur l’icône Enregistrer une macro. La macro aura pour nom DateLongue. Elle sera accessible avec le raccourci clavier Contrôle + Majuscule + D, et elle sera stockée dans le classeur courant :

Un clic sur le bouton OK et l’enregistrement commence. Pour arriver au résultat recherché, le plus simple consiste à basculer sur l’onglet Accueil et à cliquer sur le lanceur de boîte de dialogue Nombre. La boîte de dialogue Format de cellule s’affiche. Sélectionnez Date dans la zone de liste Catégorie et le type Date Longue dans la zone de liste Type, puis cliquez sur OK :

Vous allez maintenant stopper l’enregistrement de la macro. Basculez sur l’onglet Développeur dans le ruban puis cliquez sur Arrêter l’enregistrement dans le groupe Code.

Tester la macro

Pour vérifier que la macro fonctionne, commencez par saisir quelques dates dans la feuille de calcul où a été définie la macro ou dans une autre feuille de calcul du classeur :

Sélectionnez les cellules que vous venez de définir puis appuyez simultanément sur les touches Contrôle, Majuscule et D du clavier. La mise en forme est immédiate :

Remarque

Pour exécuter la macro, vous pouvez également basculer sur l’onglet Développeur et cliquer sur l’icône Macros du groupe Code. La boîte de dialogue Macro s’affiche. Sélectionnez la macro à exécuter dans la zone d liste Nom de la macro et cliquez sur Exécuter :

Modifier une macro

Une fois qu’une macro a été définie, vous pouvez toujours modifier ou définir son raccourci clavier ou sa définition. Cliquez sur l’icône Macros, dans le groupe Code de l’onglet Développeur du ruban. La boîte de dialogue Macro s’affiche. Cliquez sur la macro concernée puis cliquez sur Options. Une nouvelle boîte de dialogue s’affiche dans laquelle vous pouvez définir ou modifier le raccourci clavier et la définition de la macro :

Faites les modifications nécessaires puis cliquez sur OK pour les prendre en compte.

De retour dans la boîte de dialogue Macro, vous avez peut-être été tenté de cliquer sur le bouton Modifier. Cette action déclenche l’ouverture de la fenêtre Microsoft Visual Basic pour Applications dans laquelle vous voyez le code VBA généré par l’enregistreur de macros :

Chaque fois que vous créez une macro, Excel écrit du code VBA à votre place. Il est donc tout à fait possible de faire du VBA sans … faire du VBA !


Avant d’aborder le langage VBA, je vous propose de découvrir l’enregistreur de macros. Cet outil enregistre les actions effectuées dans Excel et les transforme en des instructions VBA. Une fois l’enregistreur lancé, tout ce que vous faites au clavier et à la souris est enregistré. Par exemple, la frappe des touches, le clic sur une cellule, le clic sur des icônes du ruban, la mise en forme des cellules, lignes et colonnes, etc.. Lorsque vous arrêtez l’enregistreur, des instructions VBA sont générées et enregistrées dans le classeur. Par la suite, vous pourrez exécuter la macro autant de fois que vous le souhaitez en utilisant une icône dans l’onglet Développeur du ruban ou un raccourci-clavier.

Pour enregistrer une nouvelle macro, sélectionnez l’onglet Développeur dans le ruban, puis cliquez sur l’icône Enregistrer une macro dans le groupe Code :

Cette action déclenche l’ouverture de la boîte de dialogue Enregistrer une macro :

Dans cette boîte de dialogue :

  • Définissez le nom de la macro, sans espace. Si le nom de la macro est composé de plusieurs mots, vous pouvez commencer chaque mot par une majuscule ou séparer les mots entre eux par des caractères de soulignement (_).
  • Affectez si nécessaire un raccourci clavier à la macro pour faciliter son exécution.
  • La liste déroulante Enregistrer la macro dans est initialisée par défaut à Ce classeur. La macro sera donc liée au classeur courant et ne pourra s’exécuter que dans ce classeur. Vous pouvez également choisir de l’enregistrer dans le classeur de macros personnelles. Dans ce cas, la macro est enregistrée dans le classeur masqué xlbs, qui se trouve dans le dossier C:\Utilisateurs\nom d’utilisateur\AppData\Local\Microsoft\Excel\XLStart. Elle sera disponible dans tous les classeurs. Les classeurs stockés dans le dossier XLStart s’ouvrent automatiquement à chaque démarrage d’Excel, et les éventuelles macros enregistrées dans le classeur de macros personnelles sont automatiquement accessibles.
  • Décrivez la macro en quelques lignes dans la zone Description.

Cliquez enfin sur OK lorsque vous êtes prêt à lancer l’enregistrement.


Qu’est-ce que VBA ?

VBA est l’abréviation de Visual Basic for Applications. Comme son nom l’indique, VBA est issu du langage Visual Basic de Microsoft. Le “A” de VBA désigne les applications de la suite Office. Essentiellement Word, Excel, PowerPoint et Outlook. En utilisant VBA, vous pourrez donc automatiser certaines tâches dans les applications Office. Cette formation s’intéresse avant tout à l’utilisation de VBA dans Excel, mais les principes abordés s’appliquent (sauf lorsqu’ils sont trop spécifiques) aux autres applications de la suite.

L’onglet Développeur

L’onglet Développeur du ruban d’Excel contient plusieurs icônes nécessaires lorsque l’on développe du code VBA. Cet onglet n’étant pas accessible par défaut dans le ruban, voyons comment le faire apparaître.

Lancez la commande Options dans le menu Fichier. La boîte de dialogue Options Excel s’affiche. Basculez sur l’onglet Personnaliser le ruban (1), cochez la case Développeur (2) et validez en cliquant sur OK (3).

L’onglet Développeur fait désormais partie du ruban d’Excel. Vous l’utiliserez pour tous vos développements VBA :


Excel est très pratique pour réaliser des documents sous la forme de tableaux : des bulletins de paie, des devis et des factures, par exemple. Il permet également de créer des études prévisionnelles, d’analyser et de synthétiser des données.

Parfois, il n’existe aucune fonctionnalité prédéfinie dans Excel pour répondre à un besoin particulier. Vous devez alors “programmer Excel” pour créer cette fonctionnalité. Pour cela, vous pouvez passer par l’enregistreur de macros ou par le langage VBA. Cette formation va vous apprendre à utiliser l’un comme l’autre. Aucune connaissance en programmation n’est nécessaire. Par contre, vous devez avoir déjà pratiqué Excel. Si les termes classeur, feuille de calcul, cellule et formule vous sont étrangers, commencez par vous former sur Excel. Consultez :


Cet article va vous montrer comment tester la validité d’une adresse e-mail saisie par l’utilisateur dans une zone de texte. La couleur d’arrière-plan de la zone de texte sera verte si l’adresse est correcte, rouge sinon.

Pour faciliter la comparaison entre la saisie et le modèle attendu, nous allons utiliser une expression régulière. Pour cela, nous allons piocher dans les caractères de remplacement du tableau suivant :

Expression Signification Exemple
^ Début de la chaîne ^a sera vrai si la chaîne commence par un a
$ Fin de la chaîne t$ sera vrai si la chaîne se termine par un t
. N’importe quel caractère a, b, z, T, 1, @, etc
? Répète 0 ou 1 fois le caractère précédent xy? Signifie x ou xy
* Répète 0, 1 ou plusieurs fois le caractère précédent xy* signifie x, xy, xyy, xyyy, etc.
+ Répète 1 ou plusieurs fois le caractère précédent xy+ signifie xy, xyy, xyyy, etc.
\ Le caractère d’échappement \ autorise l’utilisation de caractères réservés \. Est équivalent au point décimal
[xyz] Un caractère unique de l’expression [xyz] signifie x, y ou z
[^xyz] Un caractère unique à l’exclusion des caractères de l’expression [^xyz] signifie un caractère quelconque sauf x, y et z
[a-z] Un caractère unique compris entre les deux bornes [a-zA-Z] signifie une lettre minuscule ou majuscule quelconque
exp1|exp2 exp1 ou exp2 PHP4|PHP5 signifie PHP4 ou PHP5
{min, max} Répétition du caractère précédent entre min et max fois x{2,3} signifie xx ou xxx

x{1,} signifie x, xx, xxx, xxxx, etc.

x{,3} signifie chaîne vide, x, xx ou xxx

Pour savoir si une adresse e-mail est valide, vous pouvez utiliser l’expression régulière suivante :

^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$

Examinons cette séquence :

  • L’adresse e-mail commence (^) par un nombre quelconque de lettres minuscules, de chiffres, de points décimaux et de caractères de soulignement : ^[a-z0-9._-]+
  • Elle est suivie du caractère @
  • D’une séquence de deux ou plus de deux lettres minuscules, chiffres, points décimaux ou caractères de soulignement : [a-z0-9._-]{2,}
  • D’un point décimal : \.
  • Et enfin d’une séquence de 2 à 4 lettres qui termine ($) l’adresse e-mail: [a-z]{2,4}

Cette courte introduction aux expressions régulières étant terminée, nous allons maintenant nous intéresser à son utilisation en VBA.

Dans un premier temps, vous devez valider l’utilisation de la bibliothèque Microsoft VBScript Regular Expression 5.5. Rendez-vous dans la fenêtre Microsoft Visual Basic pour Applications. Lancez la commande Références dans le menu Outils. La boîte de dialogue Références s’affiche. Déplacez-vous dans la zone de liste pour atteindre l’entrée Microsoft VBScript Regular Expression 5.5 et cochez la case qui la précède :

Validez en cliquant sur OK. Ça y est, vous pouvez utiliser des expressions régulières dans le code VBA du classeur.

Insérez une zone de texte dans la feuille. Pour cela, basculez sur l’onglet Développeur du classeur, cliquez sur l’icône Insérer du groupe Contrôles et cliquez sur Zone de texte, sous Contrôles ActiveX :

Assurez-vous que l’icône Mode Création est enfoncée (onglet Développeur, groupe Contrôles), puis double-cliquez sur la zone de texte. La procédure TextBox1_Change() est créée. Complétez-la comme ceci :

Private Sub TextBox1_Change()

    Dim reg As New VBScript_RegExp_55.RegExp

    reg.Pattern = "^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$"

    If reg.Test(TextBox1.Text) = True Then

      TextBox1.BackColor = RGB(0, 255, 0)

    Else

      TextBox1.BackColor = RGB(255, 0, 0)

    End If

End Sub

Examinons ce code.

La première ligne définit l’objet regexp reg :

Dim reg As New VBScript_RegExp_55.RegExp

La deuxième instruction définit l’expression régulière et l’affecte à la propriété Pattern de l’objet reg :

reg.Pattern = "^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$"

Le bloc If suivant applique la méthode Test() de l’objet reg à la zone de texte. Si la valeur retournée est True, la zone de texte correspond au modèle de l’expression régulière. Dans ce cas, l’arrière-plan de la zone de texte est coloré en vert :

If reg.Test(TextBox1.Text) = True Then

  TextBox1.BackColor = RGB(0, 255, 0)

Si la valeur retournée est False, la zone de texte ne correspond pas au modèle de l’expression régulière. Dans ce cas, l’arrière-plan de la zone de texte est coloré en rouge :

Else

  TextBox1.BackColor = RGB(255, 0, 0)

End If