Tutorial Débutant VBA - Comment créer un programme sans connaissance en VBA

Dans ce tutorial nous allons voir comment créer simplement une petite application VBA en réalisant une calculatrice. Ce premier tutorial est volontairement très basic et s'adresse en particulier à ceux qui n'ont jamais utilisé le langage de programmation VBA.

1 - Construction de la feuille de calcul

Pour commencer, créez une nouvelle feuille de calcul (CTRL + N) et enregistrez là où le souhaitez, sous le nom « Calculatrice VBA - Excel Formation.xlsm »

L'enregistrement en « *.xlsm » permet d'enregistrer les macros directement dans le fichier.

Ensuite, créez votre calculatrice, en tenant compte de ce qui suit :

  • Sur la première ligne nous afficherons le résultat
  • Sur la seconde le calcul
  • Nous laisserons la troisième ligne vide
  • À partir de la quatrième ligne nous allons saisir le clavier
     

Vous devriez assez facilement parvenir au résultat suivant :


Si lors de la saisie des symboles [/,*,-,+,=] un message d'erreur appraît, échappez le avec un apostrophe, comme sur l'image.

2 - Mise en forme de la calculatrice

Ensuite, mettez en forme votre calculatrice comme bon vous semble.

Pour obtenir des touches de clavier carrées, sélectionnez les colonnes A à D, puis clique droit, largeur de colonne et dans la fenêtre qui s'affiche, saisissez 8.

Recommencez l'opération pour les lignes 4 à 8, mais cette fois-ci saisissez 48.

Pour l'exemple le clavier de la calculatrice reprend les caractéristiques de format suivantes :

  • Taille de caractère : 36
  • Police : Calibri
  • Centrage horizontal et vertical

Les écrans de calculs sont fusionnés, alignés à droite et en taille 14.


Pour fusionner les écrans, selectionnez les cellules A1 à D1 et cliquez sur le bouton « Fusionner et centrer », puis cliquez sur le bouton « Aligner à droite »

Continuez de personnaliser votre calculatrice pour obtenir le résultat qui vous convienne.

3 - Un peu de code VBA

Avant d'attaquer le code, prenez le temps de nommer vos zones afin d'en rendre leur utilisation plus simples.
Nous allons avoir trois zones :

  • Cellules A1 à D1 : ecran_resultat
  • Cellules A2 à D2 : ecran_calcul
  • Cellules A4 à D4 : clavier


Pour nommer une zone, selectionnez les cellules et saisissez son nom dans la zone de nommage en haut à gauche, juste avant la barre de formule


Et voilà, le travail préparatoire est maintenant terminé, nous allons pouvoir écrire quelques lignes de code.

Le code que nous allons voir est à insérer dans le code de la feuille afin d'utiliser directement les évennements provoquées par celle-ci. Pour afficher cette page de code, faites un clique gauche sur l'onget en bas à gauche de la fenêtre, puis « Visualiser le code »

Dans la fenêtre qui s'affiche saisissez le code suivant :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' Ici nous allons lancer notre programme
    msgbox "Hello, vous avez cliqué sur une cellule"
End sub

Ce que nous venons de taper indique à Excel d'afficher le message « Hello, vous avez cliqué sur une cellule » à chaque fois que vous cliquerez quelque part.

La première ligne permet de capter l'évenement « La cellule selectionnée a changé », ce qui veux dire que chaque fois que nous cliquerons sur une nouvelle cellule, Excel lancera la procédure comprise entre cette ligne et la fin de la procédure (ligne 4 : « End sub »). En prime Excel renvoie la ou les cellules concernées, en les stockant dans une variable de type Range (ensemble de cellules) et ayant pour nom « Target », cette information nous servira par la suite.

La deuxième ligne correspond à un commentaire VBA. Excel n'executera pas cette ligne, qui permet juste au developpeur de documenter son application afin de mieux s'y retrouver. 

Enfin, la troisième ligne lance l'instruction VBA qui permet d'afficher un message. Entre les guillements, le paramètre permet de définir le texte de ce message.

Revenez sur votre feuille de calcul et cliquez n'importe où. Si tout se passe bien, vous verrez alors que le message s'affichera.

Maintenant, plutôt que d'afficher un message, nous allons dire à Excel « Affiche la valeur de la cellule selectionnée dans la cellule de calcul »
Pour ce faire remplacez la ligne contenant l'instruction msgbox par ce qui suit :

[ecran_calcul].Value = [ecran_calcul].Value & Target.Value

Souvenez-vous, juste avant nous avions nommé les plages de cellules. La cellule « ecran_calcul » correspond à la cellule A2, nous aurions ainsi très bien pu saisir Range("A2"), mais utiliser les noms rend le code bien plus clair, et surtout si la cellule venait à changer de coordonnées (par exemple si nous ajoutions une ligne au dessus), le lien ne serait pas rompu entre la feuille de calcul et le code VBA.
Dans cette instruction, nous ajoutons simplement la valeur de la cellule selectionnée à la fin de l'écran de calcul.

Cette instruction est executée à chaque fois que nous cliquons sur une nouvelle cellule. Nous allons maintenant vouloir nous limiter au clavier de la calculatrice. Pour ce faire, remplacez l'instruction par celle-ci :

    If Not Application.Intersect(Target, [clavier]) Is Nothing Then
        [ecran_calcul].Value = [ecran_calcul].Value & Target.Value
    End If

Pour contrôler que la cellule selectionnée se situe sur le clavier, nous utilisons l'instruction Application.Intersect qui renvoie les cellules contenue dans les plages données en argument. Lorsqu'il n'y a aucune cellule existante à l'intersection des deux plages, l'instruction renvoie comme résultat « Nothing ». L'utilisation du « Not » juste avant Application.Intersect permet de valider que le résultat renvoyé n'est pas « Nothing », et donc qu'il existe bien une intersection entre le clavier de la calculatrice et la cellule selectionnée.

« If … Then » est une condition, ce qui signifie que si l'élément testé après le « If » est vrai, alors on peut executer le code situé entre le « Then » et le « End If »

Vous pouvez desormais tester la calculatrice, l'écran ne se changera que lorsque vous cliquerez sur le clavier.

Enfin, pour effectuer les calculs, remplacez l'ensemble de votre code par les lignes suivantes :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    ' Si la cellule selectionnée est sur le clavier
    If Not Application.Intersect(Target, [clavier]) Is Nothing Then
    
        ' Nous voulons le résultat
        If Target.Value = "=" Then
            [ecran_resultat].FormulaR1C1 = "=" & [ecran_calcul].Value
            [ecran_resultat].Value = [ecran_resultat].Value
            [ecran_calcul].Value = [ecran_resultat].Value
            
        ' Ou nous voulons réinitialiser les calculs
        ElseIf Target.Value = "C" Then
            [ecran_calcul].Value = ""
            [ecran_resultat].Value = ""
            
        ' On nous voulons saisir des informations
        Else
            [ecran_calcul].Value = [ecran_calcul].Value & Target.Value
        End If
        
        ' On remet le focus hors du clavier
        [ecran_resultat].Select
    End If
    
End Sub

Les commentaires sur le code parlent d'eux-mêmes : lorsque que nous cliquons sur le clavier (ligne 4) :

  • on regarde si la cellule selectionnée est le « = », et dans ce cas on effectue le calcul (nous verrons si dessous le détail), 
  • sinon on regarde si la cellule selectionnée est le « C », dans ce cas on efface le calcul en insérant un vide dans l'ecran_calcul et dans l'ecran_resultat.
  • sinon lance l'instruction que nous avons vue juste au dessus pour alimenter l'ecran_calcul

Enfin, on selectionne une cellule hors du clavier. En effet, vous aviez peut-être remarqué un petit bug dans notre programme : lorsque nous voulions saisir deux fois le même chiffre (par exemple « 11 »), seul le premier était inséré dans l'ecran_calcul. Cela vient du fait que nous changions pas de cellule. En selectionnant une cellule hors du clavier après chaque clique sur ce dernier nous cliquerons desormais sur : « 1 », puis « ecran_calcul », puis à nouveau « 1 » et le calcul s'alimente correctement.

Pour effectuer notre calcul, lorsque l'on touche la cellule « = », nous procédons en trois étapes :

  • On affiche la formule dans l'ecran_resultat, en ajoutant simplement un « = » devant grace à l'utilisation de « & » qui permet de former une chaînes de caractères à partir de deux autres chaînes (l' « = » et la valeur de l'ecran_calcul)
  • Lorsque le calcul est réalisé, on le remplace par la valeur de ce calcul, toujours dans ecran_resultat
  • On affiche également la valeur du calcul dans ecran_calcul, afin de pourvoir réutiliser ce résultat dans un nouveau calcul


Et voilà, notre première application VBA est desormais terminée. Vous avez ainsi pu vous rendre compte qu'en seulement quelques lignes de codes simplistes, il est possible de réaliser une application qui tient la route et qui est parfaitement fonctionnelle.

Dans un prochain tuto, nous tâcherons de l'améliorer en ajoutant quelques fonctionnalités utiles.
 



Articles qui pourraient vous intéresser

Comment empêcher la suppression ou la modification des cellules sur Excel

Comment créer un formulaire de saisie intégré dans une feuille de calcul sur Excel

Calculer la racine n-ième d’un nombre sur Excel

Comment synthétiser les informations sur Excel : le mode plan

Commentaires

Il n'y a aucun commentaire...

Poster un commentaire

Pseudo
Commentaire

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.