Académique Documents
Professionnel Documents
Culture Documents
01. INTRODUCTION
Interne
OBJECTIF DU COURS
EXCEL VBA 2
Interne
AUTO-ÉVALUATION
EXCEL VBA 3
Interne
A QUOI ÇA SERT ?
VBA (Visual Basic for Applications) est un langage de programmation simple, intégré à tous les outils
Microsoft Office (Excel, Outlook, Powerpoint, Word…), qui permet de créer des « macros » pour :
Ajouter des fonctionnalités à ces outils
Automatiser des tâches récurrentes et chronophages (*)
Télécommander d’autres applications
(*) La RPA (Robotic Process Automation), qui consiste à remplacer les humains par des robots logiciels, est en plein
essor !
VBA existe sous Windows (complet) et sous MacOS (quelques restrictions), mais pas dans Excel Online
EXCEL VBA 4
Interne
UN CAS RÉEL (ET PERSONNEL)
EXCEL VBA 5
Interne
DÉROULÉ DU COURS (BBA)
EXCEL VBA 6
Interne
DÉROULÉ DU COURS (MSC)
EXCEL VBA 7
Interne
C’EST PARTI !
EXCEL VBA 8
Interne
DEUX FAÇONS DE CRÉER DES MACROS
EXCEL VBA 9
Interne
L’ONGLET « DÉVELOPPEUR »
EXCEL VBA 11
Interne
UN PEU DE CYBERSÉCURITÉ
Pour les repérer, les fichiers doivent être enregistrées dans un format particulier: *.xlsm (« m » pour macros)
D’ailleurs, enregistrez votre classeur (Enregistrer sous, Type = « Classeur Excel prenant en charge les macros »)
N’activez jamais les macros d’un classeur provenant d’un inconnu, y compris les exemples sur Internet !!!
EXCEL VBA 12
Interne
LE CODE VBA DE VOTRE PREMIÈRE MACRO
Onglet Développeur, Macros, Sélectionner votre macro, Modifier (votre exemple sera forcément un peu différent)
C’est beaucoup trop compliqué pour l’instant mais voici quelques clés de compréhension:
Code tapé
directement « Sub » + Nom
à la main, de votre macro
Code généré plus court
automatiquement, et plus clair
On prend des
incompréhensible et « propriétés » et
plein de lignes inutiles on leur affecte
une valeur
Une macro VBA, c’est du texte, avec des instructions qui sont exécutées les unes à la suite des autres
Une macro est déclarée par Sub Nom_de_la_Macro puis terminée par End Sub (de l’anglais subroutine)
Le nom d’une macro est limité à l’alphabet anglais (ni accents ni caractères spéciaux) sans espaces (mais on peut utiliser le « blanc
souligné » _ pour séparer les mots)
Le nom de la macro est suivi de parenthèses (comme toutes les fonctions Excel)
L’indentation (retrait en début de ligne) n’est pas obligatoire mais c’est plus lisible
Les textes (= chaînes de caractères) sont entre guillemets pour ne pas les confondre avec une instruction VBA: "Courier New"
EXCEL VBA 14
Interne
UNE LOGIQUE ARBORESCENTE
Le point permet de partir de quelque chose de grand/global puis de « zoomer » vers des éléments plus
petits/spécifiques. Par exemple pour Selection.Font.Bold = True:
On commence par la sélection (Selection)
Sur cette sélection, on zoome sur la police (Font)
Sur cette police, on zoome sur la propriété Gras (Bold)
EXCEL VBA 15
Interne
DIY: MACRO À LA MAIN
EXCEL VBA 16
Interne
LES « USER-DEFINED FUNCTIONS » (UDF)
EXCEL VBA 17
Interne
PRINCIPE DES UDF
Excel propose par défaut de nombreuses fonctions à utiliser dans vos formules :
Certaines sont très simples: SOMME, MOYENNE, MAX …
D’autres sont assez évoluées: SI, RECHERCHEV, NB.SI.ENS …
Voire carrément plus complexes: LOI.KHIDEUX.INVERSE.DROITE, RENDEMENT.BON.TRESOR …
Et pourtant:
Certaines formules manquent parfois
Ou elles doivent être remplacées par des formules super compliquées et interminables
Les UDF (User-Defined Functions) sont des formules créées par vos soins, selon vos propres besoins
EXCEL VBA 18
Interne
EXEMPLE 1: MA_FONCTION_ZERO()
EXCEL VBA 19
Interne
EXEMPLE 1: CODE À TAPER
()
Parenthèses pour
les paramètres
(il n’y en a pas ici)
End Function
Pour dire que la Pour retourner une valeur,
fonction est finie on dit que la fonction (son
nom) est égale à cette valeur
EXCEL VBA 20
Interne
DIFFÉRENCE ENTRE ROUTINE (SUB) ET FONCTION (FUNCTION)
EXCEL VBA 21
Interne
EXEMPLE 2: MULTIPLIER(…)
Notre première formule ne prend aucune paramètre (= on ne lui passe aucune valeur)
Il y en a plein dans Excel et elles sont suivies de parenthèses vides : =ALEA(), =AUJOURDHUI(), =PI()…
Créons une fonction MULTIPLIER(nombre1;nombre2) qui multiplie deux nombres et renvoie le résultat
EXCEL VBA 22
Interne
EXEMPLE 2: CODE À TAPER
Signe *
pour Multiplier
EXCEL VBA 23
Interne
DIY: LA FONCTION MA_COMMANDE()
EXCEL VBA 24
Interne