Titre VBAExcel2003 03/05/04 16:56 Page 1 VBA€¦ · Le rôle d’Excel dans la stratégie de...

26
John Walkenbach VBA pour Excel 2003 © Groupe Eyrolles, 2004 pour l’édition française, ISBN : 2-212-11432-X

Transcript of Titre VBAExcel2003 03/05/04 16:56 Page 1 VBA€¦ · Le rôle d’Excel dans la stratégie de...

J o h n W a l k e n b a c h

VBA pour

Excel 2003

Titre_VBAExcel2003 03/05/04 16:56 Page 1

©

Groupe Eyrolles, 2004 pour l’édition française,

ISBN : 2-212-11432-X

Table des matières

Remerciements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V

Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXIII

Pourquoi ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXIII

Ce que vous devez savoir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXIII

Ce dont vous avez besoin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXIV

Organisation de l�ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXIV

Le CD-Rom d’accompagnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXVI

Le Power Utility Pak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXVI

Me contacter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXVI

PARTIE I

Quelques notions essentielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

CHAPITRE 1

D�où vient Excel 2003 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Bref historique des tableurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Tout a commencé avec VisiCalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Lotus 1-2-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Quattro Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Microsoft Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Excel : un outil de choix pour les développeurs . . . . . . . . . . . . . . . . . . 13

Le rôle d’Excel dans la stratégie de Microsoft . . . . . . . . . . . . . . . . . . . 14

CHAPITRE 2

Excel en un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Penser en termes d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Classeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

VBA pour Excel 2003VIII

Feuilles de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Feuilles de graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Feuilles macro XLM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Boîtes de dialogue Excel 5/95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

L’interface utilisateur d’Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Menus contextuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Barres d�outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Boîtes de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Glisser-déposer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Raccourcis clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Balises actives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Volet Office . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Saisir des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Formules, fonctions et noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Personnaliser l’affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Sélectionner les objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Formatage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Formatage numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Formatage stylistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Formes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Graphiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Macros et programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Accès aux bases de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Bases de données de feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Bases de données externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Fonctionnalités Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Fonctionnalités XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Outils d’analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Sous-totaux automatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Utilitaire d�analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Tableau croisé dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Solveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Macros complémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Table des matières IX

Options de protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Protéger des formules contre le remplacement . . . . . . . . . . . . . . . . . . . . 38Protéger la structure d�un classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Protéger un classeur avec un mot de passe . . . . . . . . . . . . . . . . . . . . . . . 40Protéger le code VBA avec un mot de passe . . . . . . . . . . . . . . . . . . . . . . 40

Système d’aide d’Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

CHAPITRE 3

Formules et techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

À propos des formules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Formules de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Références de cellules et de plage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Pourquoi employer des références non relatives ? . . . . . . . . . . . . . . . . . . 45La notation L1C1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Référence à d�autres feuilles ou classeurs . . . . . . . . . . . . . . . . . . . . . . . . 47

Utiliser les noms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Nommer des cellules et des plages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Appliquer des noms aux références existantes . . . . . . . . . . . . . . . . . . . . 50Intersection des noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Nommer des colonnes et des lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Portée des noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Nommer des constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Nommer des formules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Nommer des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Erreurs de formule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Formules matricielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Un exemple de formule matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Formule matricielle pour un calendrier . . . . . . . . . . . . . . . . . . . . . . . . . . 58Le pour et le contre des formules matricielles . . . . . . . . . . . . . . . . . . . . . 58

Techniques de dénombrement et de totalisation . . . . . . . . . . . . . . . . . . 59

Utilisation des fonctions NB.SI et SOMME.SI . . . . . . . . . . . . . . . . . . . . 59Utiliser les formules matricielles pour le décompte et la totalisation . . . . 60Autres outils de décompte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Travailler avec des dates et des informations temporelles . . . . . . . . . . 62

Saisir des dates et heures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Utiliser des dates antérieures à 1900 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Créer des mégaformules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

VBA pour Excel 2003X

CHAPITRE 4

Les fichiers d�Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Démarrer Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Formats de fichiers tableur pris en charge . . . . . . . . . . . . . . . . . . . . . . 69

Fichiers tableur Lotus 1-2-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Fichiers tableur Quattro Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Formats de fichier de base de données . . . . . . . . . . . . . . . . . . . . . . . . . . 71Formats de fichiers texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Autres formats de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Fichiers enregistrés par Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Fichiers XLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Fichiers d�environnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Fichiers modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Fichiers de barres d�outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Fichiers de macros complémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Excel et le HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Comment Excel utilise-t-il le HTML ? . . . . . . . . . . . . . . . . . . . . . . . . . . 75Un peu plus de complexité... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Créer des fichiers HTML interactifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Importer et exporter des fichiers XML . . . . . . . . . . . . . . . . . . . . . . . . . 79

Qu�est-ce que le XML ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Importer des données XML en utilisant un mappage . . . . . . . . . . . . . . . . 81Importer des données XML dans une liste . . . . . . . . . . . . . . . . . . . . . . . 83Exporter des données XML depuis Excel . . . . . . . . . . . . . . . . . . . . . . . . 84

Paramètres d’Excel dans le Registre . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

À propos du Registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Paramètres d�Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

PARTIE II

Développer des applications Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

CHAPITRE 5

Qu�est-ce qu�une application de tableur ? . . . . . . . . . . . . . . . . . . 91

Les applications de tableur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Le développeur et l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Qui sont les développeurs ? Que font-ils ? . . . . . . . . . . . . . . . . . . . . . . . 93

Table des matières XI

Classifier les utilisateurs de tableur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Le public cible des applications de tableur . . . . . . . . . . . . . . . . . . . . . . . 95

Résoudre des problèmes avec un tableur. . . . . . . . . . . . . . . . . . . . . . . . 96

Types d’applications de tableur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Les feuilles de calcul « créées à la va-vite » . . . . . . . . . . . . . . . . . . . . . . 98Les feuilles de calcul personnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Les applications mono-utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Les applications « spaghetti » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Les applications utilitaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Les macros complémentaires dotées de fonctions de feuille de calcul . . . 100Les applications budgétaires monoblocs . . . . . . . . . . . . . . . . . . . . . . . . . 101Les applications de modélisation d�hypothèses . . . . . . . . . . . . . . . . . . . . 101Les applications de stockage et d�accès aux données . . . . . . . . . . . . . . . . 101Les interfaces de base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Les applications « clés en main » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

CHAPITRE 6

Les bases du développement des applications de tableur . . 103

Déterminer les besoins des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . 104

Planifier le développement d’une application adaptée aux besoins des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Déterminer l’interface utilisateur la plus appropriée. . . . . . . . . . . . . . 108

Créer des boîtes de dialogue personnalisées . . . . . . . . . . . . . . . . . . . . . . 109Utiliser des contrôles ActiveX dans une feuille de calcul . . . . . . . . . . . . 109Personnaliser les menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Personnaliser les barres d�outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Créer des raccourcis clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Vous et l’utilisateur final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Tester l�application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Protéger l�application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Rendre l�application esthétique et intuitive . . . . . . . . . . . . . . . . . . . . . . . 119Créer un système d�aide pour les utilisateurs . . . . . . . . . . . . . . . . . . . . . 120Documentation du développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Distribuer l�application à l�utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Mettre à jour l�application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

Autres problèmes de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Version d�Excel installée par l�utilisateur . . . . . . . . . . . . . . . . . . . . . . . . 122Problèmes de paramètres régionaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

VBA pour Excel 2003XII

Vitesse du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Modes vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

PARTIE III

Comprendre VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

CHAPITRE 7

Introduction à VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Historique rapide du BASIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Remarques au sujet de VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Les modèles objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128VBA et XLM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

VBA : quelques notions élémentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Introduction à l’éditeur Visual Basic (VBE) . . . . . . . . . . . . . . . . . . . . . 132

Activer le VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Les fenêtres du VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

L’Explorateur de projets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

Ajouter un nouveau module VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Supprimer un module VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Exporter et importer des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

Travailler avec la fenêtre de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

Minimiser et maximiser les fenêtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Stocker le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Saisir le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

Personnaliser l’environnement de l’éditeur Visual Basic . . . . . . . . . . . 146

Onglet Éditeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147Onglet Format de l�éditeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Onglet Général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Onglet Ancrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

L’enregistreur de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

Qu�est-ce que l�enregistreur de macros enregistre effectivement? . . . . . . 153Références relatives et références absolues . . . . . . . . . . . . . . . . . . . . . . . 154Options d�enregistrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Nettoyer les macros enregistrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

Objets et collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Hiérarchie des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Table des matières XIII

Au sujet des collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Référencer des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Propriétés et méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

Les propriétés d�objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163Les méthodes des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

L’objet Comment : une étude de cas . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

L�aide en ligne pour l�objet Comment . . . . . . . . . . . . . . . . . . . . . . . . . . 166Propriétés de l�objet Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166Les méthodes de l�objet Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166La collection Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168Au sujet de la propriété Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Les objets dans un objet Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Déterminer si une cellule contient un commentaire . . . . . . . . . . . . . . . . . 172Ajouter un nouvel objet Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Propriétés utiles de l�objet Application . . . . . . . . . . . . . . . . . . . . . . . . . . 173

Travailler avec les objets Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

La propriété Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175La propriété Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177La propriété Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

Ce qu’il faut savoir concernant les objets . . . . . . . . . . . . . . . . . . . . . . . 180

Notions essentielles à retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181En apprendre plus au sujet des objets et des propriétés . . . . . . . . . . . . . . 182

CHAPITRE 8

Principes fondamentaux de la programmation VBA . . . . . . . . 187

Vue d’ensemble des éléments du langage VBA . . . . . . . . . . . . . . . . . . . 187

Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Variables, types de données et constantes . . . . . . . . . . . . . . . . . . . . . . . 191

Définir les types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Déclarer des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Travailler avec les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . 203Travailler avec des dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

Expressions d’affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Déclarer les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207Déclarer des tableaux multidimensionnels . . . . . . . . . . . . . . . . . . . . . . . 207

VBA pour Excel 2003XIV

Les variables objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

Les types de données personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

Les fonctions prédéfinies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Manipuler les objets et les collections . . . . . . . . . . . . . . . . . . . . . . . . . . 213

La structure With-End With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214La structure For Each-Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Contrôler le flot d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Les instructions GoTo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217La structure If-Then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218La structure Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Exécuter en boucle des blocs d�instructions . . . . . . . . . . . . . . . . . . . . . . 225

CHAPITRE 9

Travailler avec les procédures Sub . . . . . . . . . . . . . . . . . . . . . . . . . 233

À propos des procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

Déclarer une procédure Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Portée des procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

Exécuter des procédures Sub 236

Exécuter une procédure avec Exécuter Sub/Userform . . . . . . . . . . . . . . . 237Exécuter une procédure depuis la boîte de dialogue Macro . . . . . . . . . . . 237Exécuter une procédure en utilisant la touche Ctrl et une touche de raccourci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Exécuter une procédure à partir d�un menu personnalisé . . . . . . . . . . . . . 239Exécuter une procédure à partir d�une autre procédure . . . . . . . . . . . . . . 241Exécuter une procédure à partir d�un bouton de barre d�outils . . . . . . . . . 246Exécuter une procédure en cliquant sur un objet . . . . . . . . . . . . . . . . . . . 247Exécuter une procédure lorsqu�un événement se produit . . . . . . . . . . . . . 248Exécuter une procédure à partir de la fenêtre Exécution . . . . . . . . . . . . . 248

Passer des arguments dans des procédures . . . . . . . . . . . . . . . . . . . . . . 249

Les techniques de gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . 253

Capture des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Exemples de gestion d�erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Exemple réaliste d’utilisation de procédures Sub . . . . . . . . . . . . . . . . . 257

L�objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Les contraintes du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Ce que vous savez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258L�approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Ce que vous devez savoir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Table des matières XV

Quelques enregistrements préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . 260Installation initiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Écrire le code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262Écrire la procédure de tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263Renforcer les tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267Résoudre les problèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268Disponibilité de l�utilitaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Évaluer le projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

CHAPITRE 10

Créer des procédures Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

Procédures Sub et procédures Function . . . . . . . . . . . . . . . . . . . . . . . . 274

Pourquoi créer des fonctions personnalisées ? . . . . . . . . . . . . . . . . . . . 274

Premier exemple de procédure Function . . . . . . . . . . . . . . . . . . . . . . . . 275

Une fonction personnalisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Utiliser une fonction dans une feuille de calcul . . . . . . . . . . . . . . . . . . . . 275Utiliser la fonction dans une procédure VBA . . . . . . . . . . . . . . . . . . . . . 276Analyser la fonction personnalisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

Les procédures Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

Déclarer une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278Portée des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280Exécuter des procédures Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

Les arguments de la procédure Function . . . . . . . . . . . . . . . . . . . . . . . 281

Exemples de fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Une fonction sans argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283Autre fonction sans argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Une fonction à un argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Une fonction à deux arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Une fonction avec un argument tableau . . . . . . . . . . . . . . . . . . . . . . . . . 289Une fonction avec des arguments facultatifs . . . . . . . . . . . . . . . . . . . . . . 290Une fonction qui retourne un tableau VBA . . . . . . . . . . . . . . . . . . . . . . . 291Une fonction qui retourne une valeur d�erreur . . . . . . . . . . . . . . . . . . . . . 294Une fonction avec un nombre indéfini d�arguments . . . . . . . . . . . . . . . . 296

Émuler la fonction SOMME d’Excel 297

Déboguer des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

La boîte de dialogue Insérer une fonction . . . . . . . . . . . . . . . . . . . . . . . 301

Spécifier une catégorie de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Ajouter une description de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

VBA pour Excel 2003XVI

Utiliser des macros complémentaires pour stocker des fonctions personnalisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

Utiliser l’API Windows 306

Exemples d�API Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Déterminer l�emplacement du dossier Windows . . . . . . . . . . . . . . . . . . . 307Détecter la touche Maj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308En apprendre plus sur les fonctions d�API . . . . . . . . . . . . . . . . . . . . . . . 309

CHAPITRE 11

Exemples et techniques de programmation VBA . . . . . . . . . . . 311

Travailler avec des plages de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

Copier une plage de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Déplacer une plage de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Copier une plage de taille variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Sélectionner ou identifier d�autres types de plages . . . . . . . . . . . . . . . . . 315Demander la valeur d�une cellule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317Entrer une valeur dans la cellule vide suivante . . . . . . . . . . . . . . . . . . . . 319Suspendre une macro en attendant une saisie de plage par l�utilisateur . . 320Compter le nombre de cellules sélectionnées . . . . . . . . . . . . . . . . . . . . . 321Déterminer le type de plage sélectionnée . . . . . . . . . . . . . . . . . . . . . . . . 322Parcourir en boucle une plage sélectionnée . . . . . . . . . . . . . . . . . . . . . . . 324Supprimer toutes les lignes vides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Déterminer si une plage est contenue dans une autre plage . . . . . . . . . . . 327Déterminer le type des données d�une cellule . . . . . . . . . . . . . . . . . . . . . 328Lire et écrire des plages de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Une meilleure technique d�écriture dans une plage . . . . . . . . . . . . . . . . . 330Transférer un tableau à une dimension . . . . . . . . . . . . . . . . . . . . . . . . . . 333Transférer une plage vers un tableau variant . . . . . . . . . . . . . . . . . . . . . . 333Sélectionner la valeur maximale d�une plage . . . . . . . . . . . . . . . . . . . . . 334Sélectionner toutes les cellules d�un format particulier. . . . . . . . . . . . . . . 335

Travailler avec des classeurs et des feuilles . . . . . . . . . . . . . . . . . . . . . . 337

Enregistrer tous les classeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Enregistrer et fermer tous les classeurs . . . . . . . . . . . . . . . . . . . . . . . . . . 338Accéder aux propriétés de classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338Synchroniser des feuilles de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

Techniques VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

Commuter la valeur d�une propriété booléenne . . . . . . . . . . . . . . . . . . . . 340Déterminer le nombre de pages imprimées . . . . . . . . . . . . . . . . . . . . . . . 341Afficher la date et l�heure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

Table des matières XVII

Afficher la liste des polices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Trier un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345Traiter une série de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

Quelques fonctions utiles pour vos programmes. . . . . . . . . . . . . . . . . . 348

La fonction FichierExiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349La fonction NomFichierUniquement . . . . . . . . . . . . . . . . . . . . . . . . . . . 349La fonction CheminExiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350La fonction NomPlageExiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350La fonction FeuilleExiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350La fonction ClasseurEstOuvert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Récupérer une valeur dans un classeur fermé . . . . . . . . . . . . . . . . . . . . . 351

Quelques fonctions de feuille de calcul utiles. . . . . . . . . . . . . . . . . . . . . 353

Retourner les informations de format d�une cellule . . . . . . . . . . . . . . . . . 353Afficher la date d�enregistrement ou d�impression d�un fichier . . . . . . . . 355Comprendre l�objet Parent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356Compter les cellules entre deux valeurs . . . . . . . . . . . . . . . . . . . . . . . . . 357Compter les cellules visibles d�une plage . . . . . . . . . . . . . . . . . . . . . . . . 358Retrouver la dernière cellule non vide dans une colonne ou une ligne . . . 359Une chaîne peut-elle être un caractère générique ? . . . . . . . . . . . . . . . . . 360Extraire le nième élément d�une chaîne de caractères . . . . . . . . . . . . . . . 362Une fonction multifonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364La fonction DECALAGEFEUILLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Retourner la valeur maximale de toutes les feuilles . . . . . . . . . . . . . . . . . 366Retourner un tableau d�entiers aléatoires sans doublons . . . . . . . . . . . . . 367Réordonner une plage de manière aléatoire . . . . . . . . . . . . . . . . . . . . . . . 369

Appels d’API Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

Déterminer les associations de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . 371Déterminer les paramètres d�impression par défaut . . . . . . . . . . . . . . . . . 372Déterminer le mode vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373Ajouter du son à vos applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374Lire et écrire dans le Registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

PARTIE IV

Travailler avec les UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

CHAPITRE 12

Solutions alternatives aux boîtes de dialogue personnalisées 383

Avant de se lancer dans la création d’un UserForm... . . . . . . . . . . . . . 384

VBA pour Excel 2003XVIII

Utiliser une boîte de dialogue InputBox. . . . . . . . . . . . . . . . . . . . . . . . . 384

La function InputBox de VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384La méthode InputBox d�Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

La function MsgBox de VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

La méthode GetOpenFilename d’Excel . . . . . . . . . . . . . . . . . . . . . . . . . 392

La méthode GetSaveAsFilename d’Excel . . . . . . . . . . . . . . . . . . . . . . . 396

Demander à l’utilisateur de spécifier un dossier . . . . . . . . . . . . . . . . . . 397

Utiliser une fonction d�API Windows pour sélectionner un dossier . . . . . 397Utiliser l�objet FileDialog pour sélectionner un dossier . . . . . . . . . . . . . . 399

Afficher les boîtes de dialogue prédéfinies d’Excel . . . . . . . . . . . . . . . . 400

Utiliser la collection Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401En apprendre plus sur les boîtes de dialogue prédéfinies . . . . . . . . . . . . . 402Utiliser des arguments avec les boîtes de dialogue prédéfinies . . . . . . . . 403Exécuter directement un élément de menu . . . . . . . . . . . . . . . . . . . . . . . 403

CHAPITRE 13

Introduction aux UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

Comment Excel manipule-t-il les boîtes de dialogue personnalisées ? 406

Insérer un nouvel UserForm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

Ajouter des contrôles à un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . 406

Contrôles de la Boîte à outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

Case à cocher (CheckBox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Liste déroulante (ComboBox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Bouton de commande (CommandButton) . . . . . . . . . . . . . . . . . . . . . . . . 408Cadre (Frame) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Intitulé (Label) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Zone de liste (ListBox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409MultiPage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Bouton d�option (OptionButton) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409RefEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Barre de défilement (ScrollBar) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Toupie (SpinButton) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410Contrôle onglet (TabStrip) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410Zone de texte (TextBox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410Bouton bascule (ToggleButton) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

Ajuster les contrôles de boîte de dialogue . . . . . . . . . . . . . . . . . . . . . . . 412

Ajuster les propriétés d’un contrôle. . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

Table des matières XIX

Utiliser la fenêtre Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413Propriétés communes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414En apprendre plus sur les propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415Raccourcis clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

Afficher et fermer des UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Afficher un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418Fermer un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419Au sujet des procédures événementielles . . . . . . . . . . . . . . . . . . . . . . . . 420

Exemple de création d’un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

Créer le UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421Écrire le code pour afficher la boîte de dialogue . . . . . . . . . . . . . . . . . . . 423Tester la boîte de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424Ajouter des procédures de gestionnaire d�événements . . . . . . . . . . . . . . . 425Valider les données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426La boîte de dialogue finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

Comprendre les événements des UserForm . . . . . . . . . . . . . . . . . . . . . 427

En apprendre plus au sujet des événements . . . . . . . . . . . . . . . . . . . . . . . 428Les événements du UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429Les événements du contrôle SpinButton (toupie) . . . . . . . . . . . . . . . . . . 429Apparier un SpinButton avec un TextBox . . . . . . . . . . . . . . . . . . . . . . . . 431

Référencer les contrôles d’un UserForm . . . . . . . . . . . . . . . . . . . . . . . . 434

Personnaliser la Boîte à outils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

Changer les icônes ou le texte des info-bulles . . . . . . . . . . . . . . . . . . . . . 435Ajouter de nouvelles pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435Personnaliser ou combiner des contrôles . . . . . . . . . . . . . . . . . . . . . . . . . 435Ajouter de nouveaux contrôles ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . 436

Créer des modèles de UserForm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

Checklist pour les UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

CHAPITRE 14

Exemples de UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

Créer un UserForm de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

Utiliser des boutons de commande dans un UserForm . . . . . . . . . . . . . . 440Utiliser une zone de liste dans un UserForm . . . . . . . . . . . . . . . . . . . . . . 440

Sélectionner des plages dans une boîte de dialogue . . . . . . . . . . . . . . . 441

Créer un écran de démarrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

Désactiver le bouton de fermeture d’un Userform . . . . . . . . . . . . . . . . 445

VBA pour Excel 2003XX

Modifier la taille d’un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

Modifier le niveau d’agrandissement et faire défiler une feuille à l’aide d’un Userform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

Techniques pour les zones de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450

Au sujet du contrôle ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450Ajouter des éléments à un contrôle ListBox . . . . . . . . . . . . . . . . . . . . . . 451Déterminer l�élément sélectionné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Déterminer les sélections multiples dans une zone de liste . . . . . . . . . . . 456Listes multiples dans une même zone de liste . . . . . . . . . . . . . . . . . . . . . 458Transférer un élément de zone de liste . . . . . . . . . . . . . . . . . . . . . . . . . . 458Déplacer des éléments dans une zone de liste . . . . . . . . . . . . . . . . . . . . . 460Travailler avec des listes multicolonnes . . . . . . . . . . . . . . . . . . . . . . . . . 462Utiliser une zone de liste pour sélectionner des lignes . . . . . . . . . . . . . . . 464Utiliser une zone de liste pour activer une feuille . . . . . . . . . . . . . . . . . . 466

Utiliser un contrôle MultiPage dans un UserForm . . . . . . . . . . . . . . . . 469

CHAPITRE 15

Techniques avancées pour les Userform . . . . . . . . . . . . . . . . . . . 471

Afficher un indicateur de progression . . . . . . . . . . . . . . . . . . . . . . . . . . 472

Créer un indicateur de progression autonome . . . . . . . . . . . . . . . . . . . . . 473Afficher un indicateur de progression en utilisant un contrôle MultiPage . 475Afficher un indicateur de progression sans utiliser de contrôle MultiPage 477

Créer des assistants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

Configurer le contrôle MultiPage pour l�assistant . . . . . . . . . . . . . . . . . . 479Ajouter les boutons au UserForm de l�assistant . . . . . . . . . . . . . . . . . . . . 480Programmer les boutons de l�assistant . . . . . . . . . . . . . . . . . . . . . . . . . . 480Programmer des dépendances dans un assistant . . . . . . . . . . . . . . . . . . . 482Tâche de l�assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

Émuler la fonction MsgBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

Code de MyMsgBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486Fonctionnement de l�émulation MsgBox . . . . . . . . . . . . . . . . . . . . . . . . 487Utiliser la fonction MyMsgBox dans l�émulation MsgBox . . . . . . . . . . . 488

Une boîte de dialogue non modale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

Gérer plusieurs boutons de UserForm à l’aide d’un unique gestionnaire d’événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

Sélectionner une couleur dans un UserForm . . . . . . . . . . . . . . . . . . . . 495

Afficher un graphique dans un Userform . . . . . . . . . . . . . . . . . . . . . . . 497

Méthode 1 : enregistrer le graphique dans un fichier . . . . . . . . . . . . . . . . 497

Table des matières XXI

Méthode 2 : Utiliser le contrôle OWC ChartSpace . . . . . . . . . . . . . . . . . 499

Afficher une feuille de calcul dans un UserForm . . . . . . . . . . . . . . . . . 502

Rendre disponible le contrôle Spreadsheet . . . . . . . . . . . . . . . . . . . . . . . 502Ajouter le contrôle Spreadsheet à un UserForm . . . . . . . . . . . . . . . . . . . 502Exemple simple d�utilisation du contrôle OWC Spreadsheet . . . . . . . . . . 503

UserForm version luxe : un formulaire de données amélioré . . . . . . . 506

Au sujet du formulaire de données amélioré . . . . . . . . . . . . . . . . . . . . . . 507Installer la macro complémentaire du formulaire de données amélioré . . 508Utiliser le formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

PARTIE V

Techniques de programmation avancées . . . . . . . . . . . . . . . . . . . . 509

CHAPITRE 16

Développer des utilitaires en VBA . . . . . . . . . . . . . . . . . . . . . . . . . . 511

Au sujet des utilitaires Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

Utiliser VBA pour développer des utilitaires. . . . . . . . . . . . . . . . . . . . . 512

Que faut-il pour faire un bon utilitaire ? . . . . . . . . . . . . . . . . . . . . . . . . 513

Text Tools : anatomie d’un utilitaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 514

Naissance du projet de l�utilitaire Text Tools . . . . . . . . . . . . . . . . . . . . . 515Objectifs du projet des Text Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515Fonctionnement de l�utilitaire Text Tools . . . . . . . . . . . . . . . . . . . . . . . . 516Le classeur TextTools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Le UserForm de l�utilitaire Text Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 516Le module de code ThisWorkbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Le module VBA Module1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519Le module de code UserForm1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521Améliorer l�efficacité de l�utilitaire Text Tools . . . . . . . . . . . . . . . . . . . . 522Enregistrer les paramètres de l�utilitaire Text Tools . . . . . . . . . . . . . . . . 524Implémenter le mécanisme d�annulation . . . . . . . . . . . . . . . . . . . . . . . . . 525Bilan du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527Comprendre l�utilitaire Text Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528

Plus d’informations au sujet des utilitaires Excel . . . . . . . . . . . . . . . . . 528

CHAPITRE 17

Travailler avec des tableaux croisés dynamiques . . . . . . . . . . 531

Exemple d’introduction aux tableaux croisés dynamiques . . . . . . . . . 532

VBA pour Excel 2003XXII

Créer un tableau croisé dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532Examiner le code enregistré pour le tableau croisé dynamique . . . . . . . . 534Nettoyer le code enregistré du tableau croisé dynamique . . . . . . . . . . . . . 535

Créer un tableau croisé dynamique plus complexe . . . . . . . . . . . . . . . 536

Données du nouveau tableau croisé dynamique . . . . . . . . . . . . . . . . . . . 536Code servant à créer le tableau croisé dynamique . . . . . . . . . . . . . . . . . . 536Fonctionnement du tableau croisé dynamique complexe . . . . . . . . . . . . . 539

Créer un tableau croisé dynamique à partir d’une base de données externe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

Créer des tableaux croisés dynamiques multiples. . . . . . . . . . . . . . . . . 542

Modifier des tableaux croisés dynamiques . . . . . . . . . . . . . . . . . . . . . . 545

CHAPITRE 18

Les graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

À propos des graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

Emplacements des graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Le modèle objet Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

Enregistrer des macros de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . 552

Sortie de l�enregistreur de macros lors de la création de graphiques . . . . . 552Nettoyer la sortie de l�enregistreur de macros . . . . . . . . . . . . . . . . . . . . . 554

Techniques VBA courantes pour les graphiques. . . . . . . . . . . . . . . . . . 555

Utiliser VBA pour activer un graphique . . . . . . . . . . . . . . . . . . . . . . . . . 555Utiliser VBA pour désactiver un graphique . . . . . . . . . . . . . . . . . . . . . . . 557Déterminer si un graphique est actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Supprimer des éléments de la collection ChartObjects ou Charts . . . . . . . 558Formater des graphiques en VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559Parcourir en boucle tous les graphiques . . . . . . . . . . . . . . . . . . . . . . . . . 560Aligner et redimensionner des objets ChartObject . . . . . . . . . . . . . . . . . . 561

Autres exemples de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562

Utiliser des noms dans une formule SERIE . . . . . . . . . . . . . . . . . . . . . . . 562Utiliser VBA pour spécifier les données utilisées par un graphique . . . . . 565Utiliser VBA pour déterminer les plages utilisées dans un graphique . . . . 569Utiliser VBA pour afficher des étiquettes de données dans un graphique . 572Afficher un graphique dans un UserForm . . . . . . . . . . . . . . . . . . . . . . . . 575

Comprendre les événements graphiques . . . . . . . . . . . . . . . . . . . . . . . . 578

Exemple d�utilisation des événements de graphique . . . . . . . . . . . . . . . . 579Activer les événements pour un graphique incorporé . . . . . . . . . . . . . . . 582Exemple : utiliser des événements graphiques avec un graphique incorporé 584

Table des matières XXIII

Astuces VBA pour les graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586

Imprimer des graphiques incorporés en pleine page . . . . . . . . . . . . . . . . 587Créer un graphique « déconnecté » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587Afficher du texte avec l�événement MouseOver . . . . . . . . . . . . . . . . . . . 589Graphiques animés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592Tracer une courbe hypocycloïde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593Créer une horloge avec un graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 594

Astuces de graphiques sans macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

Contrôler une série de données en masquant les données . . . . . . . . . . . . 596Stocker plusieurs graphiques dans une feuille graphique . . . . . . . . . . . . . 598Créer un graphique auto-extensible . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598Créer un graphique interactif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

CHAPITRE 19

Comprendre les événements d�Excel . . . . . . . . . . . . . . . . . . . . . . 611

Types d’événements qu’Excel peut surveiller . . . . . . . . . . . . . . . . . . . . 612

Ce qu’il faut savoir au sujet des événements . . . . . . . . . . . . . . . . . . . . . 613

Comprendre les séquences d�événements . . . . . . . . . . . . . . . . . . . . . . . . 613Où placer les procédures événementielles ? . . . . . . . . . . . . . . . . . . . . . . 613Désactiver des événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615Saisir le code de gestionnaire d�événements . . . . . . . . . . . . . . . . . . . . . . 616Procédures de gestionnaire d�événements utilisant des arguments . . . . . . 617

Événements de niveau classeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619

L�événement Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620L�événement Activate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621L�événement SheetActivate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621L�événement NewSheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622L�événement BeforeSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622L�événement Deactivate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623L�événement BeforePrint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623L�événement BeforeClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

Les événements Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626

L�événement Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626Surveiller une plage spécifique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627L�événement SelectionChange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631L�événement BeforeRightClick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

Les événements de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633

Événements de niveau application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634

VBA pour Excel 2003XXIV

Activer les événements de niveau application . . . . . . . . . . . . . . . . . . . . . 636Quand un classeur est-il ouvert ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637Surveiller des événements de niveau application . . . . . . . . . . . . . . . . . . . 638

Événements UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639

Événements non associés à un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640

L�événement OnTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640L�événement OnKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642

CHAPITRE 20

Interaction avec d�autres applications . . . . . . . . . . . . . . . . . . . . . . 645

Démarrer une application depuis Excel. . . . . . . . . . . . . . . . . . . . . . . . . 646

Utiliser la fonction VBA Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646Utiliser la fonction d�API Windows ShellExecute . . . . . . . . . . . . . . . . . . 649

Activer une application avec Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650

Utiliser AppActivate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650Activer une application Office . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651

Lancer des fenêtres du Panneau de configuration . . . . . . . . . . . . . . . . 651

Utiliser Automation dans Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652

Travailler avec des objets externes en utilisant Automation . . . . . . . . . . . 653Liaison anticipée et liaison tardive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653Exemple simple de liaison tardive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657Contrôler Word à partir d�Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658Contrôler Excel à partir d�une autre application . . . . . . . . . . . . . . . . . . . 661

Transmettre des e-mail personnalisés via Outlook . . . . . . . . . . . . . . . . 663

Travailler avec ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666

Transmettre des pièces jointes depuis Excel . . . . . . . . . . . . . . . . . . . . . 669

Utiliser SendKeys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

CHAPITRE 21

Créer et utiliser des macros complémentaires . . . . . . . . . . . . . 673

Qu’est-ce qu’une macro complémentaire ? . . . . . . . . . . . . . . . . . . . . . . 674

Macro complémentaire et classeur standard . . . . . . . . . . . . . . . . . . . . . . 674Pourquoi créer une macro complémentaire ? . . . . . . . . . . . . . . . . . . . . . . 675

Comprendre le gestionnaire de macros complémentaires d’Excel . . . 676

Créer une macro complémentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677

Exemple de macro complémentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

Configurer le classeur pour la macro complémentaire d�exemple . . . . . . 679

Table des matières XXV

Tester le classeur pour la macro complémentaire d�exemple . . . . . . . . . . 679Ajouter des informations descriptives pour la macro complémentaire d�exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680Créer une macro complémentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680Installer une macro complémentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682Distribuer une macro complémentaire . . . . . . . . . . . . . . . . . . . . . . . . . . 682Modifier une macro complémentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 683

Fichiers XLA et XLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683

Taille et structure des fichiers XLS et XLA . . . . . . . . . . . . . . . . . . . . . . 685Appartenance aux collections VBA des fichiers XLA . . . . . . . . . . . . . . . 685Visibilité des fichiers XLS et XLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686Feuilles de calcul et feuilles graphiques dans les fichiers XLS et XLA . . 686Accéder aux procédures VBA d�une macro complémentaire . . . . . . . . . . 687

Manipuler des macros complémentaires en VBA . . . . . . . . . . . . . . . . . 690

Comprendre la collection AddIns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690Propriétés de l�objet AddIn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692Les événements d�un objet AddIn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

Optimiser les performances d’une macro complémentaire . . . . . . . . . 696

Maximiser la vitesse du code dans les macros complémentaires . . . . . . . 696Contrôler la taille d�un fichier de macro complémentaire . . . . . . . . . . . . 697

Problèmes spécifiques aux macros complémentaires . . . . . . . . . . . . . . 698

Vérifier qu�une macro complémentaire est correctement installée . . . . . . 698Référencer d�autres fichiers depuis une macro complémentaire . . . . . . . . 699Détecter la version appropriée d�Excel . . . . . . . . . . . . . . . . . . . . . . . . . . 700

PARTIE VI

Développer des applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701

CHAPITRE 22

Créer des barres d�outils personnalisées . . . . . . . . . . . . . . . . . . 703

Au sujet des barres de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703

Manipuler des barres d’outils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704

Comment Excel gère-t-il les barres d’outils ? . . . . . . . . . . . . . . . . . . . . 705

Enregistrer les barres d�outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705Dysfonctionnement des barres d�outils . . . . . . . . . . . . . . . . . . . . . . . . . . 706

Manipuler directement des barres d’outils et des boutons . . . . . . . . . 706

VBA pour Excel 2003XXVI

À propos du mode de personnalisation des barres de commandes . . . . . . 707Distribuer des barres d�outils personnalisées . . . . . . . . . . . . . . . . . . . . . . 711

Manipuler la collection CommandBars . . . . . . . . . . . . . . . . . . . . . . . . . 713

Types de barres de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713Lister tous les objets CommandBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714Créer une barre de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715Référencer des barres de commandes dans le code VBA . . . . . . . . . . . . . 716Supprimer une barre de commandes en VBA . . . . . . . . . . . . . . . . . . . . . 717Propriétés des barres de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717Référencer des contrôles d�une barre de commandes . . . . . . . . . . . . . . . . 723Énumérer les contrôles d�une barre de commandes . . . . . . . . . . . . . . . . . 724Lister les contrôles de toutes les barres d�outils . . . . . . . . . . . . . . . . . . . . 725Ajouter un contrôle à une barre de commandes . . . . . . . . . . . . . . . . . . . . 727Supprimer un contrôle dans une barre de commandes . . . . . . . . . . . . . . . 728Propriétés des contrôles de barres de commandes . . . . . . . . . . . . . . . . . . 728

CHAPITRE 23

Créer des menus personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

Quelques mots au sujet de la barre de menus Excel . . . . . . . . . . . . . . . 740

Types de modifications possibles des menus Excel . . . . . . . . . . . . . . . . 740

Comprendre la terminologie des menus Excel . . . . . . . . . . . . . . . . . . . . . 741Supprimer des éléments de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742Ajouter des éléments de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742Modifier des éléments de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743

Utiliser VBA pour personnaliser les menus d’Excel . . . . . . . . . . . . . . . 744

Lister les informations des menus Excel . . . . . . . . . . . . . . . . . . . . . . . . . 744Ajouter un menu à une barre de menus . . . . . . . . . . . . . . . . . . . . . . . . . . 746Supprimer un menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749Ajouter des éléments de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749Afficher le raccourci clavier d�un élément de menu . . . . . . . . . . . . . . . . 754Réparer un menu réinitialisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756

Menus événementiels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757

Ajouter et supprimer automatiquement des menus . . . . . . . . . . . . . . . . . 757Désactiver ou masquer des menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758Travailler avec des éléments à cocher . . . . . . . . . . . . . . . . . . . . . . . . . . . 760

Méthode simple de création de menus personnalisés . . . . . . . . . . . . . . 763

Créer une barre de menus Feuille de calcul de remplacement . . . . . . 765

Travailler avec des menus contextuels . . . . . . . . . . . . . . . . . . . . . . . . . . 768

Table des matières XXVII

Ajouter des éléments de menu aux menus contextuels . . . . . . . . . . . . . . 770Effacer des éléments de menu dans des menus contextuels . . . . . . . . . . . 771Désactiver des éléments de menu contextuel . . . . . . . . . . . . . . . . . . . . . . 772Désactiver des menus contextuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772Réinitialiser des menus contextuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773Créer de nouveaux menus contextuels . . . . . . . . . . . . . . . . . . . . . . . . . . 773

CHAPITRE 24

Proposer de l�aide pour vos applications . . . . . . . . . . . . . . . . . . . 777

De l’aide pour vos applications Excel . . . . . . . . . . . . . . . . . . . . . . . . . . 777

Systèmes d’aide utilisant les composants d’Excel . . . . . . . . . . . . . . . . . 780

Utiliser des commentaires de cellule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780Utiliser une zone de texte pour l�aide . . . . . . . . . . . . . . . . . . . . . . . . . . . 780Utiliser une feuille de calcul pour afficher le texte d�aide . . . . . . . . . . . . 782Afficher de l�aide dans un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . 782Utiliser le compagnon Office pour afficher l�aide . . . . . . . . . . . . . . . . . . 787

Aide contextuelle dans un UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . 790

Utiliser le système d’aide HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790

Associer un fichier d’aide à votre application . . . . . . . . . . . . . . . . . . . . 792

Associer un sujet d’aide à une fonction VBA . . . . . . . . . . . . . . . . . . . . 793

Autres moyens d’afficher de l’aide HTML . . . . . . . . . . . . . . . . . . . . . . 794

Utiliser la méthode Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794Afficher de l�aide dans une boîte de dialogue . . . . . . . . . . . . . . . . . . . . . 795Afficher de l�aide dans une boîte de dialogue InputBox . . . . . . . . . . . . . 795

CHAPITRE 25

Développer des applications orientées utilisateur . . . . . . . . . . 797

Qu’est-ce qu’une application orientée utilisateur ? . . . . . . . . . . . . . . . 797

L’Assistant d’amortissement de prêt . . . . . . . . . . . . . . . . . . . . . . . . . . . 798

Utiliser l�application d�Assistant d�amortissement de prêt . . . . . . . . . . . . 799Structure du classeur de l�Assistant d�amortissement de prêt . . . . . . . . . . 801Fonctionnement de l�Assistant d�amortissement de prêt . . . . . . . . . . . . . 801Améliorations possibles pour l�Assistant d�amortissement de prêt . . . . . . 806

Concepts de développement d’applications. . . . . . . . . . . . . . . . . . . . . . 807

VBA pour Excel 2003XXVIII

PARTIE VII

Autres sujets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809

CHAPITRE 26

Problèmes de compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811

Qu’est-ce que la compatibilité ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811

Types de problèmes de compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . 812

Formats de fichier pris en charge par Excel . . . . . . . . . . . . . . . . . . . . . 813

Évitez d’utiliser de nouvelles fonctions . . . . . . . . . . . . . . . . . . . . . . . . . 814

Compatibilité sous Macintosh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815

Créer une application internationale . . . . . . . . . . . . . . . . . . . . . . . . . . . 816

Applications multilingues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818Considérations sur le langage VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819Utiliser des propriétés locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819Identifier les réglages système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820Paramètres de date et d�heure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822

CHAPITRE 27

Manipuler des fichiers en VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823

Opérations de fichiers courantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

Commandes VBA relatives aux fichiers . . . . . . . . . . . . . . . . . . . . . . . . . 824Utiliser l�objet FileSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827Utiliser l�objet FileSystemObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829Localiser des fichiers qui contiennent un texte spécifique . . . . . . . . . . . . 831

Travailler avec des fichiers texte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832

Ouvrir un fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832Lire un fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833Écrire un fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834Obtenir un numéro de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834Déterminer ou définir la position de fichier . . . . . . . . . . . . . . . . . . . . . . . 834Instructions pour la lecture et l�écriture . . . . . . . . . . . . . . . . . . . . . . . . . . 835

Exemples de manipulation de fichiers texte . . . . . . . . . . . . . . . . . . . . . 835

Importer des données à partir d�un fichier texte . . . . . . . . . . . . . . . . . . . 836Exporter une plage de cellules vers un fichier texte . . . . . . . . . . . . . . . . . 836Importer un fichier texte dans une plage . . . . . . . . . . . . . . . . . . . . . . . . . 838Journaliser les démarrages/fermetures d�Excel . . . . . . . . . . . . . . . . . . . . 839Filtrer un fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840

Table des matières XXIX

Importer plus de 256 colonnes de données . . . . . . . . . . . . . . . . . . . . . . . 840Exporter une plage au format HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 843Exporter une plage de cellules dans un fichier XML . . . . . . . . . . . . . . . . 845

CHAPITRE 28

Manipuler des composants Visual Basic . . . . . . . . . . . . . . . . . . . 851

Présentation de l’EDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851

Modèle objet de l’EDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853

La collection VBProjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853

Afficher tous les composants dans un projet VBA . . . . . . . . . . . . . . . . 856

Remplacer un module par une version modifiée. . . . . . . . . . . . . . . . . . 857

Utiliser du code VBA pour écrire du code VBA . . . . . . . . . . . . . . . . . . 860

Ajouter des contrôles à un UserForm en phase de conception . . . . . . 862

Manipuler un UserForm en phase de conception ou à l�exécution . . . . . . 862Ajouter 100 boutons de commande au moment de la conception . . . . . . . 864

Créer des UserForm en programmant . . . . . . . . . . . . . . . . . . . . . . . . . 866

Exemple simple de UserForm à l�exécution . . . . . . . . . . . . . . . . . . . . . . 866Exemple complexe et utile de UserForm dynamique . . . . . . . . . . . . . . . . 868

CHAPITRE 29

Comprendre les modules de classe . . . . . . . . . . . . . . . . . . . . . . . . 875

Qu’est-ce qu’un module de classe ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875

Exemple : créer une classe NumLock . . . . . . . . . . . . . . . . . . . . . . . . . . 876

Insérer un module de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877Ajouter du code VBA au module de classe . . . . . . . . . . . . . . . . . . . . . . . 878Utiliser la classe NumLockClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881

À propos des modules de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882

Nommer la classe objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882Programmer des propriétés d�objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882Programmer des méthodes pour les objets . . . . . . . . . . . . . . . . . . . . . . . 884Événements de module de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885

Exemple : une classe de fichier CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . 885

Variables de niveau module de classe pour la classe CSVFileClass . . . . . 886Procédures Property pour la classe CSVFileClass . . . . . . . . . . . . . . . . . . 886Procédures de méthodes pour la classe CSVFileClass . . . . . . . . . . . . . . . 887Utiliser l�objet CSVFClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889

VBA pour Excel 2003XXX

CHAPITRE 30

Questions/réponses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893

Questions générales concernant Excel . . . . . . . . . . . . . . . . . . . . . . . . . . 894

L’éditeur Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898

Procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901

Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906

Objets, propriétés, méthodes et événements . . . . . . . . . . . . . . . . . . . . . 909

UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919

Macros complémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924

Barres de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927

PARTIE VIII

Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931

ANNEXE A

Ressources Excel en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933

Support technique Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933

Les options de support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933Base de connaissances Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934Page d�accueil d�Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934Outils Microsoft Office sur le Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934

Les newsgroups sur Internet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935

Les newsgroups de tableur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935Newsgroups Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935Recherche dans les newsgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936

Sites Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937

The spreadsheet page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937Pearson Software Consulting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937Les pages Excel de Stephen Bullen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938Pages Excem de David McRitchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938Page Excel de Jon Peltier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938Mr. Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938Les FAQ de tableurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938

Table des matières XXXI

ANNEXE B

Instructions et fonctions VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939

Appeler des fonctions Excel dans des instructions VBA. . . . . . . . . . . . 942

ANNEXE C

Codes d�erreur VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949

ANNEXE D

Contenu du CD-Rom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953

Configuration matérielle requise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953

Utiliser le CD-Rom sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954

Contenu du CD-Rom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954

Fichiers créés par l�auteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967

Résoudre les pannes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971