Macros et langage VBA

16
Editions ENI Macros et langage VBA Apprendre à programmer sous Excel (4 e édition) Collection Solutions Business Table des matières

Transcript of Macros et langage VBA

Page 1: Macros et langage VBA

Editions ENI

Macros et langage VBAApprendre à programmer sous Excel

(4e édition)

CollectionSolutions Business

Table des matières

Page 2: Macros et langage VBA

© 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 3: Macros et langage VBA

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 4: Macros et langage VBA

© 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 5: Macros et langage VBA

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 6: Macros et langage VBA

© 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 7: Macros et langage VBA

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 8: Macros et langage VBA

© 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 9: Macros et langage VBA

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 10: Macros et langage VBA

© 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 11: Macros et langage VBA

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 12: Macros et langage VBA

© 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 13: Macros et langage VBA

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 14: Macros et langage VBA

© 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

Page 15: Macros et langage VBA

Editions ENI

Macros et langage VBAApprendre à programmer sous Excel

(4e édition)

CollectionSolutions Business

Table des matières

Excel Macros et programmation en VBA

CollectionCahiers d’exercices

Table des matières

Page 16: Macros et langage VBA

CA HI ER D’ EX ERC I CES

Excel 2016 - Macros et programmation en VBA 3 �

CAHIER D’EXERCICES

EXCEL 2016 - Macros et programmation en VBAExc el 20 1 6 - M acros et p rogram m at i on en V BA2.1 Table des matières

ÉNONCÉS CORRIGÉS

MACROS ENREGISTRÉES 5 119

FONCTIONS PERSONNALISÉES 11 139

STRUCTURES CONDITIONNELLES 21 145

BOUCLES 35 157

SAISIE DE DONNÉES - AFFICHAGE DE RÉSULTATS 49 167

TRAVAUX SUR PLAGES 61 177

TRAVAUX SUR FEUILLES ET CLASSEURS 81 191

PROCÉDURES ÉVÈNEMENTIELLES 93 201

LES FORMULAIRES 105 215