Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macros et Fichiers *.bas et *.cls

5 réponses
Avatar
Albert
Bonjour

J'ai des fichiers EXCEL avec des macros, je peux voir et selectionner les
macros avec alt/F8 ou alt/F11 etc...

J'ai une macro sur feuil1 nommé ««Private Sub Worksheet_Change(ByVal Target
As Range)»» cette macro n'apparait pas avec alt/F8.


Quand j'exporte les macros des Modules un fichier «toto.bas» est créé.
Quand j'exporte la macro de feuil1 un fichier «titi.cls» est créé.

Une explication serait appréciée.

Merci


--
albertri-at-videotron.ca.invalid

5 réponses

Avatar
MichD
Bonjour,

Quand tu exportes un "MODULE STANDARD", fichier créé est un fichier .bas. Tous les autres
modules des feuilles, ThisWorkbook, crée un fichier .cls, parce que tous ces modules sont
des modules de classe (classe -> cls). La principale différente entre un module de classe
et un module standard, c'est que le module de classe représente un "objet" qui appartient
au modèle objet VBA d'Excel. Tu peux voir la liste des objets dans l'explorateur d'objets
de la fenêtre VBA (raccourci clavier : F2). Ces objets sont identifiés à l'aide d'une
icône particulier. Dans la boîte de saisie recherche de la fenêtre de l'explorateur
d'objets, tape "Range" et regarde son icône. Chaque objet a la même icône. Tu as aussi une
icône particulier pour les méthodes (représente une action qu'un objet peut exécuter) et
un autre pour les propriétés. La bibliothèque a sa propre icône... etc.

Les modules standards sont utilisés pour y inscrire le code et les variables applicables à
tous les modules du classeur, par conséquent pouvant être appelé par toutes les procédures
des modules de classe. Cela dépend si une procédure est déclarée "Private" ou "Public".


Private Sub Worksheet_Change(ByVal Target As Range)
Cette procédure événementielle appartient seulement à chacun des modules "Feuille" d'un
classeur.
Avatar
MichD
En suppléments,

Tous les objets ont un module de classe, mais seulement certains de ces objets ont un
module qui est accessible par les usagers. Comme ces modules contiennent des macros
événementielles, l'usager a besoin d'une interface pouvant définir les actions à être
exécutées suite à certaines manipulations de l'usager. De plus lorsque tu introduis des
contrôles émanant de la barre des outils "Contrôle", tu peux aussi utiliser et programmer
les événements de ces contrôles appartenant à chaque feuille...dans le module de la
feuille.
Avatar
Albert
Bonjour MichD
"MichD" a écrit dans le message de
news:lr66i0$1eb$
Bonjour,

Quand tu exportes un "MODULE STANDARD", fichier créé est un fichier .bas.
Tous les autres modules des feuilles, ThisWorkbook, crée un fichier .cls,
parce que tous ces modules sont des modules de classe (classe -> cls). La
principale différente entre un module de classe


Merci
C'est la meilleure courte explication que j'ai eu à ce jour.
J'ai compris la différence entre un Module et un Module de Classe.
Mon seul problème, les objets, quand j'étais technicien dans les années 50
les objets je pouvais les voir et toucher.
Avec la venue des circuits intégrés, il ne fallait pas chercher les
composants discrets, mais voir le résultats donné par l'ensemble des
composants.
À l'arrivée de Windows 3.1 les objets c'était abstrait pour moi et ça le
demeure encore avec W7 et Office 10.

Quand je fais F2, la liste des centaines d'objets qui défile me laisse
perplexe.
J'ai un petit trou à combler.

Merci beaucoup
Albert

--
albertri-at-videotron.ca.invalid
Avatar
GL
Le 28/07/2014 22:12, Albert a écrit :
Bonjour MichD
"MichD" a écrit dans le message de
news:lr66i0$1eb$
Bonjour,

Quand tu exportes un "MODULE STANDARD", fichier créé est un fichier
.bas. Tous les autres modules des feuilles, ThisWorkbook, crée un
fichier .cls, parce que tous ces modules sont des modules de classe
(classe -> cls). La principale différente entre un module de classe


Merci
C'est la meilleure courte explication que j'ai eu à ce jour.
J'ai compris la différence entre un Module et un Module de Classe.



Un module est un conteneur pour des fonctions et procédures (routines).
Un module de classe est un type (de variable objet) : on instancie une
variable objet de type "ModuleDeClasse" qui définit ses champs,
propriétés et méthodes (ces noms font référence à des éléments de
syntaxe)

Un module de classe permet aussi de définir une interface via la clause
/Implements/. Un même objet peut avoir plusieurs interfaces et une seule
implémentation, ou à l'inverse plusieurs objets peuvent partager la même
interface pour des implémentations différentes. La clause /Implements/
peut ainsi être utilisée pour rendre /privée/ (dans un sens faible) les
propriétés/méthodes d'un objet.

Mon seul problème, les objets, quand j'étais technicien dans les années
50 les objets je pouvais les voir et toucher.
Avec la venue des circuits intégrés, il ne fallait pas chercher les
composants discrets, mais voir le résultats donné par l'ensemble des
composants.
À l'arrivée de Windows 3.1 les objets c'était abstrait pour moi et ça le
demeure encore avec W7 et Office 10.

Quand je fais F2, la liste des centaines d'objets qui défile me laisse
perplexe.
J'ai un petit trou à combler.



L'"explorateur d'objets" présente en fait l'ensemble des déclarations
plutôt que les objets (ie l'ensemble des modules, qui sont des objets,
mais aussi toutes les constantes publiques, y compris les éléments des
types énumérés, les types, les méthodes etc.)

C'est pourquoi cette liste est très volumineuse.


Merci beaucoup
Albert

Avatar
Albert
"GL" a écrit dans le message de
news:53d74fe3$0$2369$

Merci de vos commentaires additionnels
albert

Le 28/07/2014 22:12, Albert a écrit :
Un module est un conteneur pour des fonctions et procédures (routines).
Un module de classe est un type (de variable objet) : on instancie une
variable objet de type "ModuleDeClasse" qui définit ses champs,
propriétés et méthodes (ces noms font référence à des éléments de
syntaxe)

Un module de classe permet aussi de définir une interface via la clause
/Implements/. Un même objet peut avoir plusieurs interfaces et une seule
implémentation, ou à l'inverse plusieurs objets peuvent partager la même
interface pour des implémentations différentes. La clause /Implements/
peut ainsi être utilisée pour rendre /privée/ (dans un sens faible) les
propriétés/méthodes d'un objet.