Installation

Ce site a pour but de vous faire partager mon plaisir de la programmation (développement de logiciels, développement Web), cela est possible pour ceux qui s'en donnent les moyens. Au travers des différents tutoriels que je vous proposerai, vous allez apprendre la programmation en jouant, de manière ludique.

Le seul prérequis de ce tutoriel est d’aimer explorer et découvrir. Nul besoin d’être un expert ou avoir baigné dans l’informatique depuis sa naissance ! Constatant avoir appris efficacement dans la programmation par la pratique, ce tutoriel est composé d’exercices avec ses corrigés détaillés, avec une difficulté progressive. Dans un premier temps, je vous propose de lire les corrigés proposés, puis dans un second temps, de faire les exercices à télécharger en bas de page (en cours de préparation).

VBA en bref

Souvent les entreprises gardent leur données dans leur base de donnée, et l'exporte sous format Excel. Il y a alors tout intérêt à apprendre le langage "Visual Basic Application" sur Excel, pour développer des applications Excel pour automatiser des traitements, des calculs. L'intérêt est d'avoir un langage directement lié à votre tableur, et de rester sur un seul logiciel qui est Microsoft Office. VBA est utile si l'Entreprise a fait le choix d’utiliser Excel comme principal outil bureautiques, conjointement avec des systèmes « Business Object » utilisé par les Grandes Entreprises.

Une macro Excel, dans son sens le plus basic, enregistre une succession d’actions que vous faites sur votre feuille de calcul, pour permettre de la reproduire. Une macro est un enregistreur, comme un enregistreur de cassette vidéo, qui enregistre sous formes de « code », toutes les actions que vous faites à la main. Ici, nous n’allons pas utiliser l’enregistrement de macro, mais plutôt coder directement dans l’éditeur de macro, appelé Visual Basic for Applications (VBA).

VBA est accessible pour ceux qui n’ont jamais fait de la programmation. Et c’est bon langage pour découvrir le développement, et ensuite par exemple essayer Python ou Java pour ceux vraiment intéressé par la programmation et les possibilités qu’offrent l’informatique. La programmation en VBA sur Excel permet d’accéder à tout le potentiel qu’offre Excel. Avec, vous pouvez créer de réel « mini logiciel » ou « application », surtout si vous combinez avec d'autres outils, d'autres langages.

Activer VBA

Activer l’onglet spécial nommé Développeur, masqué par défaut. Voici comment faire avec Excel 2013 et Excel 2010. Cliquez sur l’onglet Fichier puis sur Options. Dans la fenêtre Options Excel qui s’ouvre, cliquez, dans la colonne de gauche, sur Personnaliser le ruban.

Dans la partie droite de la fenêtre, l’élément Onglets principaux est sélectionné dans la liste Personnaliser le ruban située à droite. Éventuellement, si ce n’est pas le cas, sélectionnez ce choix dans cette liste. Puis, dans la liste des onglets qui est présentée en dessous, cochez la case devant Développeur.

Ajout onglet VBA

Cliquez sur le bouton OK pour valider. L’onglet Développeur apparaît alors dans le ruban, après l’onglet Affichage. Vous pourrez dès lors sélectionner cet onglet pour accéder aux différents boutons de commande : éditeur VBA, enregistrement de macros, contrôles de formulaires, etc.

Depuis l’onglet développeur, cliquez sur l’icône Visual Basic. Normalement, une nouvelle fenêtre s’ouvre avec pour titre « Visual Basic for Application ».

Si vous avez un message d’erreur notifiant que les macros sont désactivées, je vous conseille de suivre la petite manip’ présenté dans le lien suivant :
http://www.excel-pratique.com/fr/astuces_vba/activer_les_macros.php

Première macro

Ouvrez un nouveau fichier Excel vierge. Maintenant, faites un clic droit sur VBAProjet (nom_du_fichier), puis sélectionner Insert -> Module.

Ensuite, écrivez dans l’éditeur ses quelques lignes dans l'éditeur

Sub test1()
MsgBox "Ma premiere macro!"
End Sub
      

Il existe plusieurs façons d’exécuter une macro, et de deux manières différentes en manuel. La première façon consiste à appuyer sur le bouton Play en haut de page de l’environnement VBA (ou F5).

Si tout se passe bien, une nouvelle fenêtre devrait apparaître :

La deuxième méthode consiste, depuis l’environnement Excel, d’ajouter un bouton qui sera rattaché à une macro voulue. Pour cela, aller dans : Développeur -> Insérer -> ActiveX Controls -> Command Button

Puis dessiner un carré sur l’écran. Lorsqu’une fenêtre apparaît, sélectionner le nom de la macro qui sera exécuté lorsque vous appuierez sur le bouton.

Maintenant, lancez la macro simplement en cliquant sur le bouton créé ! Si tout se passe bien, vous devriez y retrouvez le message « Ma première macro ! ».
A noter : Un fichier Excel contenant une macro VBA doit être enregistrée au format XLSM. Pensez-y lorsque vous souhaitez enregistrer vos fichiers, sinon la macro est perdue !

Exercice 1 avec correction

Enoncé: Avec une Macro sans l’enregistreur de macro bien sûr, copier les valeurs de Pierre (voir image ci-dessus) dans les cellules F2, G2 et H2, de telle sorte que : F2 = A5 ; G2 = B5 ; et H2 = C5.

Correction proposée:

Sub exercice1()
Range("F2") = Range("A5").Value
Range("G2") = Range("B5").Value
Range("H2") = Range("C5").Value
End Sub
Autres manières de récupérer de la cellule A5 dans A6:
Sub exercice1_bonus()
' Option 2: Passer par un variable, qu'il faut d'abord instancier
Dim Nombre As Integer
Nombre = Range("A5").Value   ' ou Cells(5, 1).Value
Range("G2") = Nombre
' Option 3: Copier coller
Range("A5").Copy
Range("G2").Paste
End Sub

Exercice 2 avec correction

Enoncé: Calculer le nombre de candidats masculin avec la fonction SI, via VBA.

Correction proposée:

Sub exercice2()
Range("F4") = Application.CountIf(Range("B2:B8"), "Masculin")
End Sub

On peut utiliser les fonctions d’Excel en VBA. La seule différence est que le nom de la formule doit être en anglais (Une simple recherche Google et vous aurez la traduction en anglais de votre formule). Par exemple : Range("A5") = "=SUM(A1:A3)" pour calculer la somme de cellule A1 à A3.
Attention : Les fonctions d’Excel sont disponibles uniquement si elles sont sur une cellule du tableau excel. On ne peut pas faire :

Sub nepasfaire()
Dim monnombre As Integer  ' instancie une variable
monnombre = SUM(A1:A3)
End Sub

Exercice 3 avec correction

Enoncé: Calculer le pourcentage de candidats masculin avec une ou plusieurs fonctions Excel (respectivement en F2, F3, F4).

Correction proposée:

Sub exercice3()
Range("F4") = Application.CountIf(Range("B2:B8"), "Masculin")
Range("G4") = Application.CountIf(Range("B2:B8"), "*")
Range("H4") = Range("F4").Value / Range("G4").Value
End Sub