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

Apprenez le langage VBA - Editions ENI

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Apprenez le langage VBA - Editions ENI

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

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

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

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

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

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

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

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

© 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

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

© 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

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

© 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

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

© 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

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

© 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

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

© 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

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

© 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