Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire...

21
Editions ENI Apprenez le langage VBA et devenez un expert sur Excel Collection Solutions Business Table des matières

Transcript of Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire...

Page 1: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Editions ENI

Apprenez le langage VBAet devenez un expert sur Excel

CollectionSolutions Business

Table des matières

Page 2: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

1Chapitre 1IntroductionA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1. Pourquoi apprendre VBA ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92. Pourquoi ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103. Quel est le niveau nécessaire pour lire ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . 114. Quel sera votre niveau à la fin de la lecture de ce livre ?. . . . . . . . . . . . . . . . . . . . 115. Comment lire ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116. L’auteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

B. Avant de commencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131. Vocabulaire spécifique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132. Raccourcis-clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

a. Manipulation d’un classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14b. Manipulation du tableur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3. Versions de Microsoft Office Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15a. Excel 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15b. Excel 2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16c. Excel 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16d. Excel 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16e. Excel 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16f. Office pour Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17g. OpenOffice.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17h. Version du livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17i. Langue du produit Office . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Chapitre 2Gestion des employés : exploitation de données brutesA. Formules Excel avancées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21b. Présentation du classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25a. Liste déroulante dans une cellule – Validation de données . . . . . . . . . . . . . . 25b. Formule de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29c. Structure conditionnelle sur Excel : conditions et SI . . . . . . . . . . . . . . . . . . . 32d. Formule conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Page 3: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Apprenez le langage VBA2 et devenez un expert sur Excel

e. Gestion des cas d’erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34f. Calcul matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36a. Nommage des plages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36b. Fonctions de recherche : afficher le poste et le salaire

de l’année précédente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38c. Gestion des erreurs et formules conditionnelles. . . . . . . . . . . . . . . . . . . . . . . 42d. Gérer l’erreur sur le salaire des nouveaux arrivants . . . . . . . . . . . . . . . . . . . . 43e. Salaire moyen par grade et filière : calcul matriciel

contre formule conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44f. Création de la pyramide des âges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

B. Indicateurs clés et partages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57b. Présentation du classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57a. Formules Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57b. Création d’un graphique Sparkline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60c. Mise en forme conditionnelle simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61d. Introduction au tableau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68a. Mise en place du tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68b. Formules statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69c. Mise en valeur des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71d. Sparkline contre graphique classique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Chapitre 3Gestion des ventes et formulaires VBAA. Formulaire de gestion des ventes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

1. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79b. Présentation du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82a. Concept de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82b. Concept de formulaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84c. Rédaction du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Page 4: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

3d. Le fonctionnement de l’éditeur Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . 90

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92a. Création du formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92b. Création des contrôles sur le formulaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96c. Définition des procédures et événements . . . . . . . . . . . . . . . . . . . . . . . . . . . 101d. Rédaction du code : procédures et événements. . . . . . . . . . . . . . . . . . . . . . . 103

B. Protéger le classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132b. Présentation du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133a. Afficher/masquer une feuille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133b. Protéger la structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135c. Protéger la feuille et ses cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137d. Protéger le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

3. Création de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142a. Masquer les feuilles Factures et Produits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142b. Protéger la structure du classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143c. Afficher les stocks via un formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143d. Protéger les cellules de la feuille Accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149e. Protéger le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

Chapitre 4Gestion d’une campagne de testA. Création de tableaux et graphiques croisés dynamiques (TCD et GCD) . . . . . . . . 155

1. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155b. Présentation du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159a. Créer un tableau croisé dynamique simple. . . . . . . . . . . . . . . . . . . . . . . . . . . 159b. Créer un tableau croisé dynamique avec l’assistant . . . . . . . . . . . . . . . . . . . 162c. Champs calculés et éléments calculés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169d. Créer un graphique croisé dynamique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174a. Stock d’anomalies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174b. Nombre d’anomalies par projets (et par priorité) . . . . . . . . . . . . . . . . . . . . . 178

Page 5: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Apprenez le langage VBA4 et devenez un expert sur Excel

c. Avancement des cas de tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184d. Revue des cycles de test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189e. Indicateur de situation des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

B. Automatisation de la création d’un rapport PowerPoint . . . . . . . . . . . . . . . . . . . . . 2001. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200b. Présentation du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203a. Enregistrement de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203b. Créer un tableau croisé dynamique avec VBA . . . . . . . . . . . . . . . . . . . . . . . . 205c. Créer un graphique avec VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207d. Manipuler PowerPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210a. Actualiser et copier les graphiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210b. Nombre de tests par personne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214c. Mise en forme du rapport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218d. Création du rapport PowerPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223e. Finalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Chapitre 5Gestion des employésA. Calcul de la durée et du planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

1. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233b. Présentation du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235a. Formules de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235b. Mise en forme conditionnelle avancée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240a. Calcul de la durée de chaque tâche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240b. Mise en forme du diagramme de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

B. Gestion des présences - Outil d’administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2541. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254b. Présentation du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Page 6: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

52. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

a. Création dynamique de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258b. Tableaux VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260a. Initialisation du formulaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260b. Bloquer l’accès à la feuille Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270c. Calculer le coût du projet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

Chapitre 6Consolidation et partage de donnéesA. Consolidation de données diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

1. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283b. Présentation des classeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287a. Manipulation de feuilles et classeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287b. Sélection et ouverture d’un classeur Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . 287c. Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288d. Format de la cellule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289e. Formule Excel dans le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289f. Select Case et structure conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291a. Structure du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291b. Déclaration des variables feuille et classeur . . . . . . . . . . . . . . . . . . . . . . . . . . 292c. Définition de la boîte de dialogue d’ouverture de fichier . . . . . . . . . . . . . . . 293d. Parcours des feuilles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

B. Partage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3091. Description de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

a. Présentation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309b. Présentation des classeurs et outils utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . 309c. Fonctionnalités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

2. Notions de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311a. Formulaire de tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311b. OneDrive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316c. Enquêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317d. Envoyer un e-mail avec VBA via Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

Page 7: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Apprenez le langage VBA6 et devenez un expert sur Excel

3. Réalisation de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322a. Créer un formulaire de saisie automatique pour faciliter

la saisie des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322b. Créer une enquête partagée via OneDrive et la diffuser. . . . . . . . . . . . . . . . 326c. Envoyer un e-mail avec les statistiques des ventes aux agences . . . . . . . . . 335

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

Page 8: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

Editions ENI

Apprenez le langage VBAet devenez un expert sur Excel

CollectionSolutions Business

Table des matières

Macros et langage VBAApprendre à programmer sous Excel

(4e édition)

CollectionSolutions Business

Table des matières

Page 9: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

© E

ditio

ns E

NI -

All

right

s res

erve

d

Table des matières 1Partie 1La programmation dans Excel

Chapitre 1IntroductionA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17B. À qui s'adresse ce livre ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17C. Qu’est-ce qu’une macro ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17D. Quel intérêt de faire des macros ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18E. Contenu de ce livre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Chapitre 2L'éditeur de Visual BasicA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21B. Comment lancer Visual Basic Editor ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1. Version Excel 2003 (ou antérieure) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222. Version Excel 2007 ou postérieure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223. Raccourci-clavier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

C. L’interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231. Les modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2. Les boîtes de dialogue personnalisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263. Les barres d’outils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Chapitre 3La programmation en Visual BasicA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31B. Qu'est-ce qu'un objet ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

1. Propriété d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312. Méthode d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

C. Règle de codification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321. Association d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322. Association de propriétés ou de méthodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

D. Aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33E. Codification des cellules et des plages de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

1. La cellule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342. La plage de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343. Les cellules nommées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Page 10: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

2

Macros et langage VBAApprendre à programmer sous Excel

F. Signification du signe = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35G. Les procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36H. Les fonctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Chapitre 4Premier programmeA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41B. L’Enregistreur de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

1. Version Excel 2003 (et inférieure) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422. Version Excel 2007 (et supérieure) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

C. Premier exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44D. Examen du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48E. Exécution du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48F. Autres techniques d'amélioration du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

1. Enregistrement d'actions avec deux feuilles de calcul . . . . . . . . . . . . . . . . . . . . . 492. L'instruction Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513. L'instruction Copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514. Transfert de données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515. Le bloc de données With ... End With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526. Le code optimisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

G. Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Partie 2Les bases de la programmation

Chapitre 5Les variablesA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57B. Qu'est-ce qu'une variable ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57C. La méthode MsgBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

1. Affichage d'un message personnalisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582. Afficher le résultat d'une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593. Personnaliser le message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

D. Déclaration d'une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611. Déclaration obligatoire ou pas ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612. Vérification des déclarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Page 11: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

© E

ditio

ns E

NI -

All

right

s res

erve

d

Table des matières 3

3. Type de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63a. Déclaration de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63b. Déclaration de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64c. Déclaration de dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65d. Déclaration d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65e. Déclaration booléenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66f. Déclaration en Variant, la déclaration fourre-tout . . . . . . . . . . . . . . . . . . . . . 67

4. Portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67a. L’instruction Dim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67b. L’instruction Static. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68c. L’instruction Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

E. Cas pratique de l'utilisation d'une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69F. La méthode InputBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71G. Les tableaux en mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722. L'avantage de travailler avec des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Chapitre 6Les conditionsA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75B. L'instruction If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752. Exemple d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763. Explication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774. Transformation du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775. Raccourci d'écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786. Condition imbriquée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

C. L'instruction SELECT CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802. Exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

a. Test sur une seule valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80b. Test sur plusieurs valeurs non contiguës . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81c. Test sur des valeurs contiguës . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

3. Réversibilité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82D. IF ou SELECT CASE ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83E. Exemple d’utilisation des deux instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

1. Création du test en fonction de paramètres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832. Création des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Page 12: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

4

Macros et langage VBAApprendre à programmer sous Excel

3. Création du test dans le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854. Programme complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Chapitre 7Les bouclesA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91B. L'instruction For ... Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

1. Étapes d'une boucle For ... Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922. Premier exemple de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923. Explication du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924. Exemple de boucle avec deux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

a. Étape n°1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93b. Étape n°2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94c. Étape n°3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94d. Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

C. Boucle selon condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951. While ... Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

a. Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95b. Exemple d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95c. Contrainte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2. Exemple de code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

3. Do ... Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

a. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99b. Exemple d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100c. Explication du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101d. Amélioration du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101e. Travailler sur deux feuilles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

D. Boucle sur des objets Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042. Explication du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Chapitre 8DébogageA. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109B. Bonnes pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110C. Lecture "Pas à pas" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

1. La touche 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112. La combinaison de touches s8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Page 13: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

© E

ditio

ns E

NI -

All

right

s res

erve

d

Table des matières 5D. Espionner les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112E. La fenêtre Espions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115F. Fenêtre des variables locales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116G. Le point d'arrêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118H. L'instruction Debug.Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120I. Arrêt selon condition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121J. Intervenir pendant l'exécution du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

1. Retour-arrière . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232. Changer la valeur des variables manuellement . . . . . . . . . . . . . . . . . . . . . . . . . . 124

K. Exemple d'application du débogueur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1251. Résolution de la première erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252. Résolution de la seconde erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Chapitre 9Structure d'un programmeA. Découper un programme en plusieurs procédures . . . . . . . . . . . . . . . . . . . . . . . . . . 133

1. Code initial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1332. Découpage du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343. L'instruction Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354. Intérêt de découper en plusieurs procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

B. Portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

1. Retour sur la déclaration des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

a. Dim à l'intérieur d'une procédure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137b. Dim en début de Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137c. Déclaration en Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

2. Dim ou Public ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139C. Paramètres d'appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

1. Principe de transmission de variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . 140a. Respect du type de variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

2. Aide à la saisie et à la navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142a. Utilisation des info-bulles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142b. Navigation simplifiée. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

3. Souplesse de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144a. Finalisation du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145b. Procédures invisibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

D. Les appels de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1471. Création d'une fonction personnalisée avec des paramètres . . . . . . . . . . . . . . . 1482. Appel de la fonction personnalisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

Page 14: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

6

Macros et langage VBAApprendre à programmer sous Excel

3. Affecter un type à la fonction personnalisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1494. Transmettre une plage de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

E. Exemple d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1501. Étape 1 : création du code pour la première cellule. . . . . . . . . . . . . . . . . . . . . . . 1512. Étape 2 : extraction du calcul de la somme dans une fonction . . . . . . . . . . . . . 1513. Étape 3 : création de la fonction Moyenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1524. Étape 4 : création de la boucle pour les lignes et explication du code . . . . . . . 153

a. Le code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153b. Explication du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

5. Étape 5 : création de la boucle sur les colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . 1546. Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

F. Paramètre optionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

Partie 3Les fonctions

Chapitre 10Les fonctions de baseA. Les opérateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

1. Les opérateurs arithmétiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1612. Les opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

3. Les opérateurs logiques (ou booléens) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1634. Simplification d'écriture des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

B. Conversion de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1641. Fonctions de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1642. Tester une variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

C. Fonctions mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651. Fonctions usuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652. Les fonctions Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Chapitre 11Gérer les chaînes de caractèresA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169B. Fonctions de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

1. L'opérateur & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169a. Utilisation dans un programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169b. Exemple d'utilisation pour renommer une feuille. . . . . . . . . . . . . . . . . . . . . 169

Page 15: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

© E

ditio

ns E

NI -

All

right

s res

erve

d

Table des matières 7

c. Boucler sur tous les noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1712. Les trois instructions usuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

a. L'instruction Left . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172b. L'instruction Right . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172c. L'instruction Len . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172d. Exemple d'utilisation des instructions de texte . . . . . . . . . . . . . . . . . . . . . . . 172e. Extraction d'une partie d'une cellule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

3. Remplacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174a. Fonction Mid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174b. Fonction Replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

4. Positionnement d’un caractère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175a. L'instruction InStr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175b. L'instruction InstrRev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

5. Découper une chaîne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1776. Suppression des espaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1777. Majuscules et minuscules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

a. Tous les caractères en majuscules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177b. Tous les caractères en minuscules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177c. Première lettre en majuscule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

8. Inverser les lettres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1789. Comparaison de chaînes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

a. Fonction StrComp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

b. Fonction Like . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

10.Les caractères ASCII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180a. L'instruction Asc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180b. L'instruction Chr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

C. Lire un fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1811. Ouvrir le fichier texte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

a. Le chemin et le nom du fichier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181b. Le type d'accès. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182c. Numéro de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

2. Lire une ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1823. L'instruction EOF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1824. Fermer un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

D. Création d'un fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1831. Création d'un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1832. Écriture d'une ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1833. Déclaration des variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1834. Exemple d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

Page 16: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

8

Macros et langage VBAApprendre à programmer sous Excel

5. Exercices d’applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185a. Nouvel outil : Power Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185b. Exercice : Extraire les données d'un fichier texte . . . . . . . . . . . . . . . . . . . . . 186c. Découpage selon un caractère de séparation . . . . . . . . . . . . . . . . . . . . . . . . . 192

Chapitre 12Gestion des dates et des heuresA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201B. Introduction aux dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

1. Paramétrer les dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2022. Est-ce que ma cellule contient une date ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2033. Mettre en forme une date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

C. Les fonctions de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205D. Les fonctions d'extraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

1. Extraction sur les dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2062. Extraction sur les heures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

E. L'instruction DateSerial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2071. Convertir un nombre en date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2072. Effectuer des opérations sur les dates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2083. Manipulation sur les dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084. Mois en lettre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

F. Calculer la différence entre deux dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111. La fonction DATEDIF dans Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112. La fonction DATEDIFF en VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2123. Intégration de la fonction DATEDIF d’Excel en VBA . . . . . . . . . . . . . . . . . . . . . 213

G. Fonctions sur les semaines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2131. Quel jour dans la semaine ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132. Nombre de jours ouvrés dans la semaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2133. Numéro de semaine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2144. Jours fériés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Chapitre 13Travail sur un classeur ExcelA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219B. Manipulation sur les classeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

1. Différence entre Worbooks et ActiveWorkbook . . . . . . . . . . . . . . . . . . . . . . . . . 2202. Ouvrir un classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

Page 17: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

© E

ditio

ns E

NI -

All

right

s res

erve

d

Table des matières 9

3. Fermer un classeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2214. Enregistrer un classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2215. Enregistrer un classeur sous un nouveau nom . . . . . . . . . . . . . . . . . . . . . . . . . . 221

C. Les propriétés d'un classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222D. Interagir sur l'application Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223E. L'objet Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

1. ScreenUpdating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2242. DisplayAlerts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2243. StatusBar/DisplayStatusBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2254. Appel de fonctions de calcul d’Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

a. Comment utiliser les fonctions de calculs d'Excel . . . . . . . . . . . . . . . . . . . . . 225b. La fonction Match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226c. La fonction Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

5. Ajouter un temps de latence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286. La boîte de dialogue Ouvrir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2297. La boîte de dialogue Sauver sous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2298. Suspendre la communication avec l'imprimante. . . . . . . . . . . . . . . . . . . . . . . . . 2299. Mode copier-coller suspendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23010.Appel d'une macro externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23011.Faire parler l’ordinateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

Chapitre 14

Travail sur les fichiersA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233B. Opération sur les fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

1. Copier un fichier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2332. Renommer un fichier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2343. Déplacer un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344. Supprimer un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2345. Récupérer l'heure et la date d'un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356. Trouver la taille d'un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2357. Trouver un fichier dans un répertoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

C. Opérations sur les répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371. Définir un répertoire de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2372. Créer un répertoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373. Supprimer un répertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374. Test pour savoir si un répertoire existe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

Page 18: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

10

Macros et langage VBAApprendre à programmer sous Excel

D. "Balayer" un répertoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2381. Boucle sur les fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2382. Boucle sur les répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2393. Balayer tous les sous-répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

E. Récupérer des données sans ouvrir un classeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242F. Sélectionner un répertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243G. Sélectionner un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

Partie 4Amélioration d’un programme

Chapitre 15OptimisationA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247B. Instructions de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

1. La méthode FIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482. Résultat d'une recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483. Recherche de l'élément suivant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2494. Options de recherche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2505. Trouver le numéro de la ligne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

C. Les tableaux en mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

1. Utilité de travailler avec des tableaux en mémoire . . . . . . . . . . . . . . . . . . . . . . . 2522. Tableau à une ou deux dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

a. Tableau à une dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253b. Tableau à deux dimensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

3. Insérer des données dans un tableau en mémoire . . . . . . . . . . . . . . . . . . . . . . . 2554. Effacement d'un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2595. Redimensionnement d'un tableau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2596. Taille d'un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2607. Rechercher dans un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

a. Transférer le contenu d'un tableau dans une plage de données . . . . . . . . . 262D. Les cellules nommées et les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2642. Rôle dans un programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653. Coordonnées des cellules nommées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2664. Utilisation des tableaux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

a. L'objet ListObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267b. Propriétés spécifiques des tableaux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

Page 19: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

© E

ditio

ns E

NI -

All

right

s res

erve

d1

Table des matières 1

c. Problèmes liés au tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269E. Une API pour les millisecondes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270F. L'environnement 64 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

1. L'instruction PtrSafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2712. Les variables 64 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2713. Cohabitation plateforme 32 bits/64 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

Chapitre 16Appel d'applications externesA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275B. Supprimer les dll manquantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275C. L'instruction CreateObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277D. Envoi d’e-mails Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

1. Programme pour envoyer un courriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2782. Explication du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2793. Boucles sur vos contacts saisis dans une colonne . . . . . . . . . . . . . . . . . . . . . . . . 279

E. Création d'un fichier PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2801. Fonction pour la génération d'un fichier PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . 2802. Export d'un classeur en entier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2813. Export d'une feuille de calcul en PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

F. Connexion avec une base Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2832. Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2833. Insérer des nouveaux enregistrements dans Access . . . . . . . . . . . . . . . . . . . . . . 2864. Mettre à jour une base Access depuis Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

Chapitre 17 Lancer un programme de plusieurs façonsA. Rappel du lancement par Visual Basic Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291B. Combinaison de touches A8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291C. Lancement à l’aide d’un bouton ou d’un autre objet. . . . . . . . . . . . . . . . . . . . . . . . . 292

1. Les boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2922. Les cases d’option (ou boutons radio). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2943. Les menus déroulants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2974. Positionnement des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

D. Procédure Auto_Open/Auto_Close. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

Page 20: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

12

Macros et langage VBAApprendre à programmer sous Excel

E. Événement dans une feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3031. Principe des événements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3032. Liste des événements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3043. L'événement Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3054. Le paramètre Target. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3065. Contrôler la sélection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3066. L'événement SelectionChange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3077. L'événement double clic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

Chapitre 18Les boîtes de dialogue personnaliséesA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311B. Créer une boîte de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

1. Insérer un nouveau UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3112. Écrire du code dans un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3133. Faire référence à un UserForm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

C. Les événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315D. Les contrôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316E. Positionnement des contrôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317F. Ordre de tabulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

Chapitre 19Les contrôlesA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325B. Les étiquettes (ou labels ou intitulés) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325C. Les zones de texte (ou TextBox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327D. Les Boutons (ou CommandButton) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

1. Ajouter un bouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3292. Le bouton Annuler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3293. Le bouton OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

E. Les cases à cocher (Checkbox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330F. Les boutons d’option (OptionButton ou bouton Radio) . . . . . . . . . . . . . . . . . . . . . 332G. Les zones de liste (ou ListBox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3342. Manipuler les données de la liste. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3353. Alimenter une liste dans le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

H. Les zones de liste modifiables (les ComboBox ou menus déroulants) . . . . . . . . . . 339

Page 21: Apprenez le langage VBA - editions-eni.fr€¦Notions de cours ... Gérer l’erreur sur le salaire des nouveaux ... c. Mise en forme conditionnelle simple ...

© E

ditio

ns E

NI -

All

right

s res

erve

d3

Table des matières 1

I. Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

Chapitre 20Gestion des erreursA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345B. Les instructions pour la gestion des erreurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

1. On Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3452. L'instruction Resume. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3463. L’instruction Resume Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3464. L'instruction Err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3465. GoTo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3466. GoTo 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

C. Redirection des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3471. Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3472. Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3493. Exemple 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

AnnexesA. Types de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

B. Collections d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355C. Liste des constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356D. Liste des codes erreurs transmis par Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . 358E. Liste des caractères non imprimables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363Liste des instructions, opérateurs et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369