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

Débutant : Ou placer le code ?

6 réponses
Avatar
news.wanadoo.fr
Bonjour à tous

Je suis ennuyé : en regardant vos programmes, je trouve du code dans
- Feuil1
- Feuil2 etc...
- Userform
- Module
- Workbooks
Question : Quand j'écri un PRG Où dois-je placer le code dans tout ce
système ?
Merci beaucoup
Jacques

6 réponses

Avatar
twinley
Bonjour,

Voici quelques notes succintes que j'ai trouvé dans ce forum sur ce point...

fichiers avec une extensio .bas
Les modules standard servent à faire une macro qui s'exécute normalement

Les modules de feuille (Feuil1, Feuil2, etc...) s'activent
lorsqu'il y a un événement produit sur la feuille concernée
Voici une macro qui s'active lorsque on active la feuille qui comprend
cette macro
Private Sub Worksheet_Activate()
MsgBox ("Coucou !")
End Sub

Remarque : Il existe aussi les module de classes (très compliqué à
expliquer) et les module de "classeur" (ThisWorkbook). les modules de
"classeur" fonctionnent un peu comme les modules de feuille
mais les macro s'activent sur des événement liés au classeur
Voici un exemple qui s'active lorsqu’on ouvre le classeur :
Private Sub Workbook_Open()
MsgBox ("Coucou")
End Sub

Les macros écrites dans une feuille ne seront accessibles
que depuis cette feuille.
Les macros écrites dans un module sont accessibles dans
toutes les feuilles.

modules ou feuilles pour placer les macros

Si la macro joue sur un évenement qui se produit sur la feuille 4 : par
exemple : affichage d'un menu personnalisé chaque fois que j'ouvre la
feuille 4 et disparition quand je quitte cette feuille, alors on met
cette macro dans le module associé à cette feuille.
Si la macro s'applique à la feuille4 mais pourrait tout aussi bien
s'appliquer à la feuile1, on la met dans un module général (normal).
Simplement, il faudra préciser dans la macro, la feuille, lorsque
nécessaire.
Par exemple : si on fait référence au range A1:A4 dans une
macro. Si celle ci est dans le module de la feuille4, pas besoin de
préciser l'adresse de cette feuille dans la macro (mais on peut, ça ne
gène nullement). En revanche dans un module général, si on ne précise
pas que ces cellules A1:A4 sont celles de la feuille4, excel appliquera
la macro aux cellules de la feuille actuellement active. Si on vient
d'effectuer une opération sur la feuille 5 alors ce sont les cellules
A1:A4 de cette feuille là qui seront prises en compte.

Les fonctions sont, elles, obligatoirement écrites dans un module
ordinaire et ne peuvent pas fonctionner si elles sont mises dans un
module de feuille, même si en réalité on va les appliquer sur une seule
feuille.

Si on veut utiliser une macro dans tous tes classeurs, il faut
l'enregistrer dans un classeur particulier qui est le perso.xls. voit pas.
Regarder dans la page débuter d'excelabo comment activer ce classeur
Une autre solution, c'est d'enregistrer la macro sous forme de macro
complémentaire qu’on pourra appeller depuis d'autres classeurs.


On ne transfère jamais une feuille mais plutôt un classeur
contenant la feuille en question. En transférant un classeur, on passe
en même temps toutes les macros associées. si ces macros vont ouvrir par
exemple des fichiers situés sur un disque dur, il y aura un petit
problème chez un collègue.

Pour copier une macro d'un classeur dans l'autre, soit on copie
betement à la main la macro du premier classeur et on la colle dans un
module du second classeur, soit on exporte la première, on
l'enregistre sur le disque dur (ça permet de l'envoyer à quelqu'un
d'autre) et on la réimporte dans le second classeur. On peut aussi dans
VBE faire un glisser déposer à la souris du module contenant la macro
d'un projet VBE à l'autre. Attention dans ce cas, ce sont l'ensemble des
macros contenues dans le module qui sont copiées.

On peut très bien ne mettre qu'une seule macro par module mais ça ne
sert pas à grand chose qu'à prendre de la place. Mieux vaut les
regrouper dans quelques modules et surtout bien les documenter au moment
de l'écriture en mettant des commentaires pour se souvenir ensuite de ce
que la macro est supposée faire. Ca aide à s'y retrouver quand on les
reprend plus tard.



si ce n'est une macro événementielle, elle pourra servir
également pour d'autre, si le classeur qui la contient
est ouvert...
pour qu'elle puisse etre utilisée il ne faut pas qu'elle
soit Private.

pour s'en servir dans d'autres fichiers, la
mettre dans un module Standard !!

on la met surtout dans le Perso.xls ou bien dans un
classeur situé dans le repertoire Xlouvrir ou Xlstart.

les macro situées dans ThisWorkBbook ne sont utilisables
que dans le classeur actif, ce sont en principe des
macros événementielles :
Activate,BeforeClose,BeforePrint,BeforeSave
Deactivate,WindowDeactivate,WindowResize etc...
voir l'aide VBA : Workbook Object Events

les macro situées dans feuil(xxx) ne sont utilisables que
dans la feuille xxx concernée, ce sont également en
principe des macros événementielles :
voir l'aide VBA : Worksheet Object Events

on peut créer des macros évenementielles liées à d'autres
objets : graphes, TCD
dans ce cas c'est ce que l'on appelle un module de classe.

en général toutes autres macros déclenchées par une
action sur un bouton ou volontairement par l'utilisateur
(ou macro) doivent etre dans un module standard,
c'est le cas également pour les fonctions personnalisées.

plus d'infos sur les sites de Ch.Herbé, M.Gaboly ou bien
aussi Ch.Pearson (voir les liens sur Excelabo.net)
Suivre aussi avec interet les contributions de Michdenis,
M.Pierron et D.Malher

les macros d'un classeur restent avec ce classeur et sont
donc transmises avec ce classeur.

il en va differement des barres d'outils qui ne peuvent
etre transmises que par un processus de création à
inclure dans le classeur transmis

Nota :une private sub se place dans le module de feuil1

à+twinley

Bonjour à tous

Je suis ennuyé : en regardant vos programmes, je trouve du code dans
- Feuil1
- Feuil2 etc...
- Userform
- Module
- Workbooks
Question : Quand j'écri un PRG Où dois-je placer le code dans tout ce
système ?
Merci beaucoup
Jacques




Avatar
ST
Cela dépend ce que tu veux faire.

Tu peux associer du code à un onglet (Feuil1 par exemple) si ce code ne se
référe qu'à cette feuille => en général, ce code est associé à un événement
sur cette feuille.

Tu l'associes à un Userform si tu veux utiliser un Userform (boite de
dialogue,...)

Un module pourra s'exécuter sur demande dans le menu outils macro.

Un module peut être enregistré dans le classeur actif ou dans le classeur de
macros personnelles (ce qui te permet de l'avoir en permanence à ta
disposition)

En espérant t'avoir éclairé

ST

"news.wanadoo.fr" a écrit dans le message de
news:4281f443$0$3136$
Bonjour à tous

Je suis ennuyé : en regardant vos programmes, je trouve du code dans
- Feuil1
- Feuil2 etc...
- Userform
- Module
- Workbooks
Question : Quand j'écri un PRG Où dois-je placer le code dans tout ce
système ?
Merci beaucoup
Jacques




Avatar
jps
hum, twinley, que vient faire l'extension .bas dans cette réponse, certes
documentée
tu veux encore nous enfumer ou bien?
jacques, sache que cette extension ne concerne que l'export (et l'import)
d'un module et quand tu en seras là, c'est que tu auras déjà fait un bon
bout de chemin...grâce à twinley
jps

"twinley" a écrit dans le message de
news:
Bonjour,

Voici quelques notes succintes que j'ai trouvé dans ce forum sur ce
point...


fichiers avec une extensio .bas



Avatar
twinley
Salut jps

J'ai accumulé des infos sur les modules lors de mes débuts ce qui donne
cet aspect fouilli.
Je me promettais de mettre de l'ordre et de faire une synthèse
pédagogique, mais d'autres priorités sont plus prioritaires...
J'ai envoyé tout le morceau en me disant que si j'avais eu ça d'un seul
morceau au moment ou je cherchais, j'eusse été bien content.
J'aime bien cette façon de faire car c'est la compile de plusieurs
personnes qui explique la même chose avec des mots différents.
Seul erreur, je n'ai pas gardé la signature de chacun. Je suis
terriblement gêné. Mais nos maîtres retrouveront leurs écrits.
Je n'ai aucun mérite , c'est du récitatif.
J'espère ne pas l'avoir dégouté, imagine qu'il n'aime pas lire et qu'il
n'aime que poser des questions ? Non, un vieux traumatisme qui resurgit,
non, non. Non cela n'existe pas, pas sur ce forum.

à+twinley

hum, twinley, que vient faire l'extension .bas dans cette réponse, certes
documentée
tu veux encore nous enfumer ou bien?
jacques, sache que cette extension ne concerne que l'export (et l'import)
d'un module et quand tu en seras là, c'est que tu auras déjà fait un bon
bout de chemin...grâce à twinley
jps

"twinley" a écrit dans le message de
news:

Bonjour,

Voici quelques notes succintes que j'ai trouvé dans ce forum sur ce


point...

fichiers avec une extensio .bas







Avatar
jps
:-))))))))
non, ça n'existe pas...
jps

"twinley" a écrit dans le message de
news:
Salut jps
J'espère ne pas l'avoir dégouté, imagine qu'il n'aime pas lire et qu'il
n'aime que poser des questions ? Non, un vieux traumatisme qui resurgit,
non, non. Non cela n'existe pas, pas sur ce forum.

à+twinley

hum, twinley, que vient faire l'extension .bas dans cette réponse,
certes


documentée
tu veux encore nous enfumer ou bien?
jacques, sache que cette extension ne concerne que l'export (et
l'import)


d'un module et quand tu en seras là, c'est que tu auras déjà fait un bon
bout de chemin...grâce à twinley
jps

"twinley" a écrit dans le message de
news:

Bonjour,

Voici quelques notes succintes que j'ai trouvé dans ce forum sur ce


point...

fichiers avec une extensio .bas









Avatar
twinley
ouf !

un cauchemear sans doute ... 8-)

à+twinley

:-))))))))
non, ça n'existe pas...
jps

"twinley" a écrit dans le message de
news:

Salut jps
J'espère ne pas l'avoir dégouté, imagine qu'il n'aime pas lire et qu'il
n'aime que poser des questions ? Non, un vieux traumatisme qui resurgit,
non, non. Non cela n'existe pas, pas sur ce forum.

à+twinley


hum, twinley, que vient faire l'extension .bas dans cette réponse,



certes

documentée
tu veux encore nous enfumer ou bien?
jacques, sache que cette extension ne concerne que l'export (et



l'import)

d'un module et quand tu en seras là, c'est que tu auras déjà fait un bon
bout de chemin...grâce à twinley
jps

"twinley" a écrit dans le message de
news:


Bonjour,

Voici quelques notes succintes que j'ai trouvé dans ce forum sur ce


point...


fichiers avec une extensio .bas