Gestion des modules

Vous pouvez télécharger ici la version de Cours.XLS de la leçon précédente

Nous allons ici discerner les notions de modules et de macros. Commes ajouter, supprimer, modifier, renommer des modules et des macros.

Etat des lieux
Regroupement des macros existantes dans un seul module
Exportation de modules dans un fichier externe (.BAS)
Renommer un module
Règles d'or pour le nommage des macros et des modules

Résumé de la leçon
Avez-vous bien compris ?
Exercice

Etat des lieux

Ouvrez votre fichier de cours, ou téléchargez-le depuis la leçon précédente, et rendez-vous dans l'environnement VBA.

Nous avons déjà vu, dans la leçon 4, comment les macros étaient dispersées dans les modules. Nous allons simplement aller un peu plus loin dans la gestion de ces modules.

Dans mon classeur de cours, j'ai la configuration suivante :

J'ai double cliqué sur chacun de mes modules, et j'ai simplement réduit les fenêtres et je les ai fait se chevaucher pour obtenir cette copie d'écran.

J'ai pas mal de macros dispersées au hasard des modules. L'enregistreur de macros y est pour quelque chose : il stocke les nouveaux enregistrements comme bon lui semble !

En réalité, un module suffit. Un module ou on empile autant de macros qu'on veut. Le seul problème que vous rencontrerez sera organisationnel : en effet, si vous possédez un classeur Excel pourvu d'une centaine de macros, si elles sont toutes groupées dans un seul module, ce ne sera pas pratique pour les retrouver, et travailler avec.

Alors, vous allez faire la même chose que quand vous avez trop de fichiers, vous allez créer des dossiers. Ici, il s'agira de modules. On pourrait avoir par exemple un module qui contient toutes les macros qui trient les données, un autre module avec les macros d'utilité générale, et encore un module, par exemple, qui contiendrait les macros de test que vous génèrerez au fur et à mesure de votre apprentissage.

On ne peut pas créer de sous-modules, comme on crée des sous dossiers.

Regroupement des macros existantes dans un seul module

Jusqu'à présent, nous n'avons que des macros d'apprentissage débutant, générées pour une partie par l'enregistreur. Aussi, je trouverais pratique de les regrouper dans un seul module qui contiendrait l'ensemble de toutes les macros que nous avons généré jusqu'à présent.

C'est vraiment très simple : c'est comme un traitement de texte, il vous suffit de sélectionner les macros contenues dans un module, d'aller dans le menu Edition/Couper (ou d'utiliser le menu contextuel), et de coller le résultat en dessous de macros existantes.

Maintenant, ça va être à vous : mettez l'ensemble de toutes les macros de tous les modules dans le module Module1. Vous devriez obtenir un ensemble de 7 macros.

Si vous avez utilisé votre propre fichier de cours plutôt que le mien, il est possible que nous n'ayons pas exactement le même nombre de macros, mais ça n'a pas grande importance, nous ne les utiliserons certainement plus.

ATTENTION : Lorsque vous copiez-collez, il peut arriver que tout à coup, par erreur, vous vous retrouviez avec deux macros portant le même nom. Et, même si elles ne sont pas dans le même module, même si leur contenu est différent, c'est totalement interdit (plantages assurés)

 

Maintenant que nos autre modules sont vides, nous allons les supprimer. Il suffit de Clic-Droit sur le module à supprimer, et Supprimer.

Exportation de modules dans un fichier externe (.BAS)

A la question , répondez NON. Il propose OUI par défaut, je ne sais pas pourquoi... En effet, si vous répondez oui, il va simplement vous proposer de mettre le contenu du module que vous vous apprêtez à supprimer dans un fichier texte à part (avec l'extension .BAS). Mais 99% du temps, quand on désire supprimer un module, ce n'est pas pour le sauvegarder à part !

Supprimez les autres modules jusqu'à ce que vous n'en ayiez plus qu'un :

Renommez ce Module1 en PremieresMacros.

Renommer un module

Vous pensez qu'il s'agit de cliquer avec le bouton droit de votre souris sur Module1, et de choisir "Renommer" ? Eh non. Etrangement, ce choix contextuel n'a jamais existé, quelle que soit la version d'Excel.

Pour renommer Module1 : Allez dans le menu Affichage/Fenêtre propriétés.
Vous pouvez redimensionner des deux fenêtres avec votre souris, juste ici :
Cliquez sur Module1, et renommez-le en PremieresMacros, comme ceci : (PAS D'ESPACES entre Premieres et Macros
Dès que vous appuiyerez sur ENTER, le module sera correctement nommé.

Règles d'or pour le nommage des macros et des modules

Vous pouvez télécharger ici Cours.XLS tel qu'il devrait être à la fin de cette leçon

Vous savez désormais ajouter, renommer et supprimer des modules. Vous savez également comment transférer des macros d'un module vers un autre. Et vous éviterez bien des ennuis en évitant les nommages problématiques.

1. Quel nom de module parmi les propositions suivantes risque de poser un problème ?

Module1
Trente%
Message33


Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 197

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 197

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 198

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 198

2. Peut-on créer un module dans un module ?

Oui
Non

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 210

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 210

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 211

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 211

3. Comment peut-on renommer une macro ?

Bouton droit de la souris, et choisir Renommer
Réécrire le nouveau nom par dessus l'ancien
Supprimer complètement la macro et la réécrire
Afficher la fenêtre des propriété, et changer la propriété Name

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 227

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 227

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 228

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 228

4. Quelle macro va générer une erreur ?

Sub Vent_En_Poupe()
Sub VentEnPoupe()
Sub Vent En Poupe()
Sub SubSub()

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 244

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 244

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 245

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 245

5. A partir de combien de macros est-il obligatoire de les séparer dans des modules distincts plutôt que de les empiler dans un seul ?

5
10
15
20
Autre réponse

Warning: Undefined variable $Q5 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 264

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 264

Warning: Undefined variable $Q5 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 265

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon006/lecon006.php on line 265

Créez un classeur Excel exercice006.xls, dans lequel Vous placerez deux modules : Programmation contenant les Macros Un et Deux, et Aide qui contient simplement des lignes de commentaires, et agencez les fenêtres comme ceci :

Téléchargez la solution de l'exercice ici