VBA Excel 2016 : Guide Pratique et Exercices
VBA Excel 2016 : Guide Pratique et Exercices
VBA
VBAExcel2016 - Créez des applications professionnelles
Ce livre est destiné aux utilisateurs d'Excel 2016 voulant s'initier au lan-
gage VBA ou approfondir leurs connaissances dans ce domaine. Bien
qu'une connaissance élémentaire des principes de programmation soit
Ingénieur et MBA HEC, Claude
DUIGOU exerce ses activités de
Formateur et de Consultant en
Excel2016
Créez des applications
recommandée, elle n'est pas impérative. La première partie du livre entreprise depuis plus de 15 ans.
est en effet consacrée aux fondamentaux et propose une introduction Ses différentes missions le condui-
à la programmation en VBA dans ses applications aux objets Excel. sent à intervenir auprès d'entre-
Avec plus de 200 exercices de difficulté croissante, basés sur des prises de tailles diverses pour la
réalisation, notamment en VBA, de
professionnelles
exemples concrets, l'ouvrage couvre les domaines suivants : l'auto-
matisation des tâches répétitives, l'ajout de fonctions personnalisées, logiciels dans des domaines tels
le contrôle des principaux objets d'Excel (classeur, feuille, cellule, gra- que l'aide à la décision, le contrôle
phique), la collaboration et l'échange de données avec les applications de gestion, la gestion des stocks,
de la suite Office, la prise en charge du format XML, la publication de la gestion du temps, le contrôle
documents sur le Web, l'analyse de données, la gestion du multimé- budgétaire. Les systèmes qu'il dé-
dia ou encore l'utilisation de l'outil Power Query. veloppe font largement appel aux
possibilités et fonctionnalités
E x e rc ic e s e t c o rrig é s
Au terme de cette mise en pratique, vous pourrez adapter précisément
avancées d'Excel. Cette expé-
Excel à vos besoins et vous disposerez de tous les éléments qui vous
rience complète et variée lui per-
permettront de développer une application professionnelle avec VBA
met de proposer un livre très
Excel 2016.
pragmatique sur VBA Excel.
Les fichiers nécessaires à la réalisation des exercices, ainsi que les cor-
rigés, sont en téléchargement sur le site [Link].
27 H
Sur [Link] :
b Eléments nécessaires
à la réalisation des exercices.
b Exemples de code. Claude DUIGOU
Plus d’informations :
Introduction
Public du livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Objectif du livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Utilisation du livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Aide à la réalisation des travaux pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Énoncés
Chapitre 1 : Procédures
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Énoncé 1.1 Créer et utiliser une procédure privée . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Énoncé 1.2 Créer et utiliser une procédure publique. . . . . . . . . . . . . . . . . . . . . . . . . 40
Énoncé 1.3 Appeler une procédure à partir d'une autre procédure . . . . . . . . . . . . . . . 40
Énoncé 1.4 Appeler une procédure à partir d'un autre module . . . . . . . . . . . . . . . . . . 41
Énoncé 1.5 Appeler une procédure à partir d'un contrôle VBA . . . . . . . . . . . . . . . . . . 41
Énoncé 1.6 Utiliser une procédure à partir d'une feuille de calcul Excel . . . . . . . . . . . 42
Énoncé 1.7 Utiliser une procédure à partir d'un classeur Excel. . . . . . . . . . . . . . . . . . 42
Énoncé 1.8 Créer une fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Énoncé 1.9 Utiliser une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Énoncé 1.10 Utiliser des paramètres nommés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Chapitre 5 : Tableaux
Prérequis .................................................... 77
Énoncé 5.1 Déclarer un tableau accessible par toutes les procédures du projet. . . . . . 79
Énoncé 5.2 Déclarer un tableau accessible seulement par les procédures du module . 79
Énoncé 5.3 Utiliser un tableau déclaré dans une procédure . . . . . . . . . . . . . . . . . . . 79
Énoncé 5.4 Utiliser un tableau de niveau module . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Énoncé 5.5 Initialiser un tableau avec une boucle . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Énoncé 5.6 Déclarer et utiliser un tableau à deux dimensions. . . . . . . . . . . . . . . . . . 81
Énoncé 5.7 Déclarer et utiliser un tableau à plus de deux dimensions . . . . . . . . . . . . 81
Énoncé 5.8 Déclarer et utiliser un tableau dynamique . . . . . . . . . . . . . . . . . . . . . . . 82
Énoncé 5.9 Agrandir un tableau dynamique en préservant les valeurs initiales . . . . . . 82
Énoncé 5.10 Exploiter un tableau à l'aide d'une boucle . . . . . . . . . . . . . . . . . . . . . . . 83
Énoncé 5.11 Afficher un tableau dans un formulaire . . . . . . . . . . . . . . . . . . . . . . . . . 83
2
Chapitre 6 : Introduction à la programmation objet
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Énoncé 6.1 Accéder à un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Énoncé 6.2 Lire les propriétés d'un objet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Énoncé 6.3 Modifier les propriétés d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Énoncé 6.4 Utiliser les méthodes d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Énoncé 6.5 Gérer les collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Énoncé 6.6 Gérer les événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Énoncé 6.7 Gérer les erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Énoncé 6.8 Créer une classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Énoncé 6.9 Utiliser la classe créée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Énoncé 6.10 Créer et utiliser une collection d’objets. . . . . . . . . . . . . . . . . . . . . . . . . . 95
Chapitre 7 : Classeurs
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Énoncé 7.1 Connaître le classeur actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Énoncé 7.2 Afficher le classeur actif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Énoncé 7.3 Changer de classeur actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Énoncé 7.4 Enregistrer le classeur actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Énoncé 7.5 Ajouter un nouveau classeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Énoncé 7.6 Enregistrer un classeur en précisant le dossier de destination . . . . . . . . . 100
Énoncé 7.7 Obtenir le chemin complet où se trouve le classeur . . . . . . . . . . . . . . . . 101
Énoncé 7.8 Fermer tous les classeurs en proposant de les enregistrer. . . . . . . . . . . . 102
Énoncé 7.9 Accueillir l'utilisateur par un message
de bienvenue à l'ouverture du classeur. . . . . . . . . . . . . . . . . . . . . . . . . 102
Énoncé 7.10 Choisir la feuille de calcul à l'ouverture du classeur . . . . . . . . . . . . . . . . 103
Énoncé 7.11 Mettre à jour tous les calculs avant la fermeture du classeur . . . . . . . . . 103
Énoncé 7.12 Mettre à jour tous les calculs avant l’impression . . . . . . . . . . . . . . . . . . 104
Énoncé 7.13 Consolider des données à partir de plusieurs classeurs . . . . . . . . . . . . . 105
Énoncé 7.14 Mettre à jour des données consolidées à l'ouverture du classeur . . . . . . . 106
Énoncé 7.15 Mettre à jour des données à partir
de plusieurs classeurs de manière permanente . . . . . . . . . . . . . . . . . . . 107
Énoncé 7.16 Créer une page de garde permettant d'accéder à plusieurs classeurs . . . . 107
3
Chapitre 8 : Feuilles de calcul
Prérequis ................................................... 109
Énoncé 8.1 Connaître le nom de la feuille active . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Énoncé 8.2 Renommer la feuille active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Énoncé 8.3 Prévenir lors du changement de feuille active
en rappelant le nom de l'ancienne feuille active . . . . . . . . . . . . . . . . . . 112
Énoncé 8.4 Effectuer un aperçu de la feuille active . . . . . . . . . . . . . . . . . . . . . . . . 113
Énoncé 8.5 Déclencher une action dès qu'une feuille est activée. . . . . . . . . . . . . . . 113
Énoncé 8.6 Déclencher une action dès qu'une cellule de la feuille active est activée . 114
Énoncé 8.7 Déclencher une action dès qu'une cellule
de la feuille active est modifiée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Énoncé 8.8 Déclencher une action dès que l'on double clique
sur une cellule de la feuille active. . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Énoncé 8.9 Ajouter une nouvelle feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . 116
Énoncé 8.10 Supprimer une feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Énoncé 8.11 Copier une feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Énoncé 8.12 Connaître le nombre de feuilles du classeur. . . . . . . . . . . . . . . . . . . . . 117
Énoncé 8.13 Connaître les noms de toutes les feuilles de calcul . . . . . . . . . . . . . . . . 117
Énoncé 8.14 Afficher les noms de toutes les feuilles de calcul sous forme de liste. . . . 118
Énoncé 8.15 Rechercher une feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Énoncé 8.16 Protéger toutes les feuilles de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Énoncé 8.17 Déprotéger toutes les feuilles de calcul . . . . . . . . . . . . . . . . . . . . . . . . 119
4
Énoncé 9.14 Affecter la formule d'une cellule à une autre cellule . . . . . . . . . . . . . . . . 129
Énoncé 9.15 Affecter une formule à une cellule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Énoncé 9.16 Affecter la référence absolue d'une cellule à une autre cellule . . . . . . . . . 130
Énoncé 9.17 Affecter une valeur à une plage de cellules. . . . . . . . . . . . . . . . . . . . . . 130
Énoncé 9.18 Ajouter un commentaire à une cellule . . . . . . . . . . . . . . . . . . . . . . . . . 130
Énoncé 9.19 Remplir un tableau avec des nombres . . . . . . . . . . . . . . . . . . . . . . . . . 131
Énoncé 9.20 Afficher le nombre de colonnes, de lignes et de cellules d'une plage . . . . 131
Énoncé 9.21 Rechercher une valeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Énoncé 9.22 Créer une série de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Énoncé 9.23 Trier une plage de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Énoncé 9.24 Copier une plage de données avec liaison aux données sources . . . . . . . 133
Énoncé 9.25 Effacer les valeurs d'une plage de données
avec demande de confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Chapitre 10 : Graphiques
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Énoncé 10.1 Créer un graphique dans une feuille à part . . . . . . . . . . . . . . . . . . . . . . 137
Énoncé 10.2 Renommer une feuille contenant un graphique . . . . . . . . . . . . . . . . . . . 138
Énoncé 10.3 Déplacer une feuille contenant un graphique . . . . . . . . . . . . . . . . . . . . 138
Énoncé 10.4 Créer un graphique incorporé dans une feuille de calcul. . . . . . . . . . . . . 138
Énoncé 10.5 Étendre la source de données d'un graphique incorporé . . . . . . . . . . . . . 139
Énoncé 10.6 Étendre la source de données d'un graphique
implanté dans une feuille graphique . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Énoncé 10.7 Modifier la présentation d’un graphique . . . . . . . . . . . . . . . . . . . . . . . . 141
Énoncé 10.8 Exporter un graphique dans un fichier image . . . . . . . . . . . . . . . . . . . . 141
Énoncé 10.9 Déclencher une action quand le graphique est sélectionné . . . . . . . . . . . 142
Énoncé 10.10 Déclencher une action suite un clic sur le graphique . . . . . . . . . . . . . . . 142
5
Énoncé 11.5 Générer un nombre aléatoire à partir de code VBA
utilisant une formule Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Énoncé 11.6 Calculer l'annuité constante avec Excel à partir d'une fonction VBA . . . . 147
Énoncé 11.7 Supprimer tous les espaces inutiles et redondants
d’une plage de cellules contenant du texte . . . . . . . . . . . . . . . . . . . . . 148
Chapitre 13 : Formulaires
Prérequis ................................................... 159
Énoncé 13.1 Afficher un formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Énoncé 13.2 Afficher un formulaire en mode non modal . . . . . . . . . . . . . . . . . . . . . 161
Énoncé 13.3 Afficher un formulaire en détaillant son contenu . . . . . . . . . . . . . . . . . 161
Énoncé 13.4 Fermer un formulaire et libérer la mémoire . . . . . . . . . . . . . . . . . . . . . 162
Énoncé 13.5 Gérer le déplacement de la souris sur le formulaire . . . . . . . . . . . . . . . 163
Énoncé 13.6 Gérer le double clic de la souris sur le formulaire . . . . . . . . . . . . . . . . . 164
Énoncé 13.7 Afficher un formulaire à partir d'un autre formulaire . . . . . . . . . . . . . . . 164
Énoncé 13.8 Modifier le formulaire par programmation . . . . . . . . . . . . . . . . . . . . . . 165
Énoncé 13.9 Désactiver la croix de fermeture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
6
Chapitre 14 : Contrôles
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Énoncé 14.1 Ajouter des contrôles par programmation . . . . . . . . . . . . . . . . . . . . . . . 169
Énoncé 14.2 Masquer puis réafficher des contrôles . . . . . . . . . . . . . . . . . . . . . . . . . 170
Énoncé 14.3 Déplacer les contrôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Énoncé 14.4 Rendre un contrôle dépendant d'un autre. . . . . . . . . . . . . . . . . . . . . . . 171
Énoncé 14.5 Faire réagir les contrôles à la frappe clavier . . . . . . . . . . . . . . . . . . . . . 172
Énoncé 14.6 Faire réagir les contrôles à la souris. . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Énoncé 14.7 Afficher une colonne de données d'Excel
avec le titre en en-tête dans une zone de liste . . . . . . . . . . . . . . . . . . . 173
Énoncé 14.8 Afficher dans Excel une donnée sélectionnée dans une zone de liste . . . . 174
Énoncé 14.9 Reporter plusieurs lignes d'une zone de liste dans des cellules d'Excel . . . 174
Énoncé 14.10 Affecter à un tableau Excel la saisie effectuée
dans une liste déroulante modifiable . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Énoncé 14.11 Trier un tableau Excel à partir d'une liste déroulante modifiable . . . . . . . 176
Énoncé 14.12 Utiliser une liste déroulante à deux colonnes
et affecter le choix à une plage Excel . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Énoncé 14.13 Utiliser des boutons d'option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Énoncé 14.14 Utiliser des cases à cocher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Énoncé 14.15 Intercepter une combinaison de touches . . . . . . . . . . . . . . . . . . . . . . . 179
Énoncé 14.16 Utiliser un bouton à bascule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Énoncé 14.17 Préparer une zone de saisie préremplie et sélectionnée . . . . . . . . . . . . . 181
Énoncé 14.18 Gérer des images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
7
Chapitre 16 : Collaboration avec les applications Microsoft
Prérequis ................................................... 191
Énoncé 16.1 Lancer Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Énoncé 16.2 Créer un document Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Énoncé 16.3 Ouvrir un document Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Énoncé 16.4 Modifier un document Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Énoncé 16.5 Lancer Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Énoncé 16.6 Envoyer un mail avec Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Énoncé 16.7 Lancer Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Énoncé 16.8 Créer une base de données Access. . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Énoncé 16.9 Importer une table entière Access (avec QueryTables). . . . . . . . . . . . . . 196
Énoncé 16.10 Importer certains champs d'une table Access (avec ADO) . . . . . . . . . . . 197
Énoncé 16.11 Importer certains enregistrements d'une table Access . . . . . . . . . . . . . . 197
Énoncé 16.12 Importer certains enregistrements de plusieurs tables Access . . . . . . . . 197
Énoncé 16.13 Importer les enregistrements d'une base
de données en utilisant une liaison ODBC . . . . . . . . . . . . . . . . . . . . . . 198
8
Énoncé 18.6 Lire directement un fichier XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Énoncé 18.7 Effectuer une requête sur un fichier XML . . . . . . . . . . . . . . . . . . . . . . . 209
9
Corrigés
Chapitre 1 : Procédures
Prérequis ................................................... 229
Corrigé 1.1 Créer et utiliser une procédure privée . . . . . . . . . . . . . . . . . . . . . . . . . 230
Corrigé 1.2 Créer et utiliser une procédure publique . . . . . . . . . . . . . . . . . . . . . . . 230
Corrigé 1.3 Appeler une procédure à partir d'une autre procédure . . . . . . . . . . . . . . 230
Corrigé 1.4 Appeler une procédure à partir d'un autre module . . . . . . . . . . . . . . . . 231
Corrigé 1.5 Appeler une procédure à partir d'un contrôle VBA . . . . . . . . . . . . . . . . 231
Corrigé 1.6 Utiliser une procédure à partir d'une feuille de calcul Excel . . . . . . . . . . 232
Corrigé 1.7 Utiliser une procédure à partir d'un classeur Excel . . . . . . . . . . . . . . . . 232
Corrigé 1.8 Créer une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Corrigé 1.9 Utiliser une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Corrigé 1.10 Utiliser des paramètres nommés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
10
Chapitre 4 : Structures de contrôle
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Corrigé 4.1 Vérifier que la saisie est numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Corrigé 4.2 Dire au revoir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Corrigé 4.3 Contrôler la saisie d'une consonne ou voyelle . . . . . . . . . . . . . . . . . . . . 250
Corrigé 4.4 Afficher un message selon l'âge et le genre. . . . . . . . . . . . . . . . . . . . . . 251
Corrigé 4.5 Dire bonjour N fois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Corrigé 4.6 Compter de N en N jusqu'à M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Corrigé 4.7 Rendre obligatoire une saisie et contrôler la sortie. . . . . . . . . . . . . . . . . 254
Corrigé 4.8 Inverser l’ordre des caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Corrigé 4.9 Vérifier si un nombre est premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Corrigé 4.10 Compter le nombre d’occurrences d’un nombre . . . . . . . . . . . . . . . . . . 256
Chapitre 5 : Tableaux
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Corrigé 5.1 Déclarer un tableau accessible par toutes les procédures du projet . . . . . 259
Corrigé 5.2 Déclarer un tableau accessible
seulement par les procédures du module . . . . . . . . . . . . . . . . . . . . . . . 260
Corrigé 5.3 Utiliser un tableau déclaré dans une procédure. . . . . . . . . . . . . . . . . . . 260
Corrigé 5.4 Utiliser un tableau de niveau module . . . . . . . . . . . . . . . . . . . . . . . . . 261
Corrigé 5.5 Initialiser un tableau avec une boucle . . . . . . . . . . . . . . . . . . . . . . . . . 262
Corrigé 5.6 Déclarer et utiliser un tableau à deux dimensions . . . . . . . . . . . . . . . . . 262
Corrigé 5.7 Déclarer et utiliser un tableau à plus de deux dimensions . . . . . . . . . . . 263
Corrigé 5.8 Déclarer et utiliser un tableau dynamique . . . . . . . . . . . . . . . . . . . . . . 264
Corrigé 5.9 Agrandir un tableau dynamique en préservant les valeurs initiales . . . . . 265
Corrigé 5.10 Exploiter un tableau à l'aide d'une boucle. . . . . . . . . . . . . . . . . . . . . . . 266
Corrigé 5.11 Afficher un tableau dans un formulaire . . . . . . . . . . . . . . . . . . . . . . . . 266
11
Corrigé 6.8 Créer une classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Corrigé 6.9 Utiliser la classe créée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Corrigé 6.10 Créer et utiliser une collection d’objets . . . . . . . . . . . . . . . . . . . . . . . . 276
Chapitre 7 : Classeurs
Prérequis ................................................... 277
Corrigé 7.1 Connaître le classeur actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Corrigé 7.2 Afficher le classeur actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Corrigé 7.3 Changer de classeur actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Corrigé 7.4 Enregistrer le classeur actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Corrigé 7.5 Ajouter un nouveau classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Corrigé 7.6 Enregistrer un classeur en précisant le dossier de destination . . . . . . . . 279
Corrigé 7.7 Obtenir le chemin complet où se trouve le classeur . . . . . . . . . . . . . . . 279
Corrigé 7.8 Fermer tous les classeurs en proposant de les enregistrer . . . . . . . . . . . 279
Corrigé 7.9 Accueillir l'utilisateur par un message
de bienvenue à l'ouverture du classeur . . . . . . . . . . . . . . . . . . . . . . . . 279
Corrigé 7.10 Choisir la feuille de calcul à l'ouverture du classeur . . . . . . . . . . . . . . . 280
Corrigé 7.11 Mettre à jour tous les calculs avant la fermeture du classeur . . . . . . . . . 280
Corrigé 7.12 Mettre à jour tous les calculs avant l'impression. . . . . . . . . . . . . . . . . . 280
Corrigé 7.13 Consolider des données à partir de plusieurs classeurs . . . . . . . . . . . . . 281
Corrigé 7.14 Mettre à jour des données consolidées à l'ouverture du classeur. . . . . . . 281
Corrigé 7.15 Mettre à jour des données à partir
de plusieurs classeurs de manière permanente . . . . . . . . . . . . . . . . . . 282
Corrigé 7.16 Créer une page de garde permettant d'accéder à plusieurs classeurs. . . . 282
12
Corrigé 8.9 Ajouter une nouvelle feuille de calcul. . . . . . . . . . . . . . . . . . . . . . . . . . 286
Corrigé 8.10 Supprimer une feuille de calcul. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Corrigé 8.11 Copier une feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Corrigé 8.12 Connaître le nombre de feuilles du classeur . . . . . . . . . . . . . . . . . . . . . 286
Corrigé 8.13 Connaître les noms de toutes les feuilles de calcul . . . . . . . . . . . . . . . . 287
Corrigé 8.14 Afficher les noms de toutes les feuilles de calcul sous forme de liste . . . . 287
Corrigé 8.15 Rechercher une feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Corrigé 8.16 Protéger toutes les feuilles de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Corrigé 8.17 Déprotéger toutes les feuilles de calcul . . . . . . . . . . . . . . . . . . . . . . . . 288
13
Chapitre 10 : Graphiques
Prérequis ................................................... 301
Corrigé 10.1 Créer un graphique dans une feuille à part . . . . . . . . . . . . . . . . . . . . . 301
Corrigé 10.2 Renommer une feuille contenant un graphique . . . . . . . . . . . . . . . . . . 302
Corrigé 10.3 Déplacer une feuille contenant un graphique . . . . . . . . . . . . . . . . . . . . 302
Corrigé 10.4 Créer un graphique incorporé dans une feuille de calcul . . . . . . . . . . . . 302
Corrigé 10.5 Étendre la source de données d'un graphique incorporé . . . . . . . . . . . . 303
Corrigé 10.6 Étendre la source de données d'un graphique
implanté dans une feuille graphique . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Corrigé 10.7 Modifier la présentation d’un graphique . . . . . . . . . . . . . . . . . . . . . . . 303
Corrigé 10.8 Exporter un graphique dans un fichier image . . . . . . . . . . . . . . . . . . . . 303
Corrigé 10.9 Déclencher une action quand le graphique est sélectionné . . . . . . . . . . 304
Corrigé 10.10 Déclencher une action suite à un clic sur le graphique . . . . . . . . . . . . . 304
14
Corrigé 12.7 Choisir et ajouter une icône à une boîte de dialogue . . . . . . . . . . . . . . . 312
Corrigé 12.8 Contrôler la saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Corrigé 12.9 Effectuer une action selon le choix de l'utilisateur . . . . . . . . . . . . . . . . . 313
Corrigé 12.10 Effectuer un traitement tant que l'utilisateur réalise la saisie demandée . . 313
Corrigé 12.11 Enregistrer un classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Corrigé 12.12 Modifier la police de la feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . 314
Corrigé 12.13 Modifier la couleur d’une plage de cellules . . . . . . . . . . . . . . . . . . . . . . 314
Chapitre 13 : Formulaires
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Corrigé 13.1 Afficher un formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Corrigé 13.2 Afficher un formulaire en mode non modal. . . . . . . . . . . . . . . . . . . . . . 317
Corrigé 13.3 Afficher un formulaire en détaillant son contenu . . . . . . . . . . . . . . . . . . 318
Corrigé 13.4 Fermer un formulaire et libérer la mémoire . . . . . . . . . . . . . . . . . . . . . 318
Corrigé 13.5 Gérer le déplacement de la souris sur le formulaire . . . . . . . . . . . . . . . . 319
Corrigé 13.6 Gérer le double clic de la souris sur le formulaire . . . . . . . . . . . . . . . . . 319
Corrigé 13.7 Afficher un formulaire à partir d'un autre formulaire . . . . . . . . . . . . . . . 319
Corrigé 13.8 Modifier le formulaire par programmation . . . . . . . . . . . . . . . . . . . . . . 319
Corrigé 13.9 Désactiver la croix de fermeture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Chapitre 14 : Contrôles
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Corrigé 14.1 Ajouter des contrôles par programmation . . . . . . . . . . . . . . . . . . . . . . . 321
Corrigé 14.2 Masquer puis réafficher des contrôles . . . . . . . . . . . . . . . . . . . . . . . . . 322
Corrigé 14.3 Déplacer les contrôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Corrigé 14.4 Rendre un contrôle dépendant d'un autre. . . . . . . . . . . . . . . . . . . . . . . 323
Corrigé 14.5 Faire réagir les contrôles à la frappe clavier . . . . . . . . . . . . . . . . . . . . . 324
Corrigé 14.6 Faire réagir les contrôles à la souris. . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Corrigé 14.7 Afficher une colonne de données d'Excel
avec le titre en en-tête dans une zone de liste . . . . . . . . . . . . . . . . . . . 324
Corrigé 14.8 Afficher dans Excel une donnée sélectionnée dans une zone de liste . . . . 325
Corrigé 14.9 Reporter plusieurs lignes d’une zone de liste dans des cellules d'Excel. . . 325
Corrigé 14.10 Affecter à un tableau Excel la saisie effectuée
dans une liste déroulante modifiable . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Corrigé 14.11 Trier un tableau Excel à partir d'une liste déroulante modifiable . . . . . . . 326
Corrigé 14.12 Utiliser une liste déroulante à deux colonnes
et affecter le choix à une plage Excel . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Corrigé 14.13 Utiliser des boutons d'option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
15
Corrigé 14.14 Utiliser des cases à cocher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Corrigé 14.15 Intercepter une combinaison de touches . . . . . . . . . . . . . . . . . . . . . . . 329
Corrigé 14.16 Utiliser un bouton à bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Corrigé 14.17 Préparer une zone de saisie préremplie et sélectionnée . . . . . . . . . . . . . 330
Corrigé 14.18 Gérer des images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
16
Chapitre 17 : Programmation Web
Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Corrigé 17.1 Créer une page web statique à partir d'un classeur Excel . . . . . . . . . . . . 347
Corrigé 17.2 Créer une page web statique
à partir d’un classeur Excel chargé en mémoire . . . . . . . . . . . . . . . . . . 348
Corrigé 17.3 Afficher la boîte de dialogue "Publier en tant que page web". . . . . . . . . . 348
Corrigé 17.4 Publier le classeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Corrigé 17.5 Publier une feuille du classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Corrigé 17.6 Publier une plage de données d’une feuille du classeur . . . . . . . . . . . . . 349
Corrigé 17.7 Mettre à jour toutes les pages web . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Corrigé 17.8 Mettre à jour toutes les pages web selon certains critères . . . . . . . . . . . 350
Corrigé 17.9 Ajouter un lien hypertexte à une cellule . . . . . . . . . . . . . . . . . . . . . . . . 350
17
Chapitre 20 : Matrice et tableau croisé dynamique
Prérequis ................................................... 363
Corrigé 20.1 Rechercher une information dans une plage de données . . . . . . . . . . . . 363
Corrigé 20.2 Rechercher une valeur avec doublons dans une plage de données . . . . . 363
Corrigé 20.3 Établir le chiffre d’affaires par représentant et par pays . . . . . . . . . . . . . 364
Corrigé 20.4 Créer un tableau croisé dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Corrigé 20.5 Gérer les étiquettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Corrigé 20.6 Gérer les champs de valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Corrigé 20.7 Mettre à jour un tableau croisé dynamique . . . . . . . . . . . . . . . . . . . . . 367
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
18
Structures de contrôle
énoncé Chapitre 4
Chapitre 4
Structures de contrôle
Durée : 1 heure 55
V B A E xc e l 20 16
Mots-clés
condition, choix, test, alternative, branchement conditionnel, compteur, itération, incrémenter,
décrémenter, sortie
Objectifs
Maîtriser les structures de décision afin de tester des conditions puis effectuer des actions
différentes selon le résultat obtenu. Maîtriser les instructions d'itération qui, associées aux
instructions conditionnelles, permettent d'écrire du code Visual Basic pour la prise de décision
et la répétition des actions. Vous retrouverez ces structures dans la suite du livre. Dans ce
chapitre, nous nous limitons à l'emploi des boîtes de dialogue déjà rencontrées.
Prérequis
Pour valider les prérequis nécessaires, avant d'aborder le TP, répondez aux questions ci-après
(certaines questions peuvent nécessiter plusieurs réponses) :
65
VBA Excel 2016 - Créez des applications professionnelles
Les TP Informatiques
66
Structures de contrôle
énoncé Chapitre 4
Corrigé p. 249
67
VBA Excel 2016 - Créez des applications professionnelles
Les TP Informatiques
Indice
Utilisez la fonction IsNumeric pour tester la saisie.
Exercice 2
Durée estimative : 5 minutes
Complétez la procédure précédente qui vérifie que l'utilisateur a cliqué sur le bouton OK. Dans
le cas contraire, affichez un message. Exemple :
Corrigé p. 249
68
Structures de contrôle
énoncé Chapitre 4
Sub AuRevoir()
Dim strMessage As String
Dim intStyle As Integer
Dim intChoix As Integer
strMessage = "Souhaitez-vous quitter Excel ?"
intStyle = vbYesNo + vbDefaultButton2
... = MsgBox(strMessage, intStyle)
If ... = vbYes Then
MsgBox "A bientôt."
...
MsgBox "Poursuivons."
...
End Sub
Indice
Voici un extrait de l'aide VBA en ligne :
Corrigé p. 250
69
VBA Excel 2016 - Créez des applications professionnelles
Les TP Informatiques
Indice
Pour tester la lettre en majuscule, on effectuera la transformation suivante :
varChoix = [Link](varChoix)
Corrigé p. 250