Titre VBAExcel2003 03/05/04 16:56 Page 1 VBA€¦ · Le rôle d’Excel dans la stratégie de...
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