OVH Cloud OVH Cloud

Localisation des macros

16 réponses
Avatar
RT
Bonjour

Quelqu'un peut-il m'aiguiller vers un site ou une ficelle qui contient le
suivant


Dans les fichiers Excel en VBA il y

Les Personnal, le feuilles , les modules, etc...

Ce que je cherche à comprendre est comment optimaliser la localisation des
macros

Tant que je ne faisais que "chipoter" il n'y en avait que 4 ou 5 cela ne me
gènais pas trop

Mais maintenant cela devient encombré

Ou faut-il créer les macro que l'on veut employer tous le temps (en
personnal je suppose)

mais comment décider entre "feuille" "module" et autres


Y a-t-il quelque part un schéma de structure présenté par quelqu'un
(Misange?)

Cela me serait très utile, de même qu'a d'autres débutants, j'en suis sûr

Un grand merci et à bientôt

Rex

6 réponses

1 2
Avatar
ru-th
Une fois de plus tu frappe fort


tu n'es pas venu aux rencontres .... et tu connais pourtant ce détail ?
pourtant, elle a menacé le 1er d'entre nous qui en parlerait !

a+
rural thierry
"RT" a écrit dans le message de news:
sBEYc.230585$
Bonjour

Une fois de plus tu frappe fort

Et tout cela un Lundi matin

J'ai sauvegardé ton message et je m'en vais le potasser dans le petit bois
allongé au pied d'un arbre en écoutant les oiseaux chanter

Merci beaucoup

Et une fois de plus tes conseils font vraiment plaisir

Je te promets que lors de la prochaine rencontre dans le nord (j'habite
dans

le Brabant Wallon , Belgique) je me joindrai à vous

(Et je viendrai en Ferrari, ou du moins avec le pneu)

A plus tard

Rex


"Misange" wrote in message
news:
Bonjour Rex

Tu peux trouver des explications sur ce sujet dans la page
debuter/pap-VBA (pas à pas VBA...)

Pour revenir à ta question :

Si une macro ne devra servir qu'à une seul chose je la mets dans la
feuille


Et si je veux m'en servir dans d'autres fichiers je la mets dans un
module



Pas tout à fait

Si ta 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 tu mets
cette macro dans le module associé à cette feuille.
Si ta macro s'applique à la feuille4 mais pourrait tout aussi bien
s'appliquer à la feuile1, tu la mets dans un module général (normal).
Simplement, il faudra que tu précises dans la macro lorsque nécessaire
la feuille. PAr exemple : si tu fais 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 tu peux, ça ne
gène nullement). En revanche dans un module général, si tu ne précises
pas que ces cellules A1:A4 sont celles de la feuille4, excel appliquera
ta macro aux cellules de la feuille actuellement active. Si tu viens
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 tu veux utiliser une macro dans tous tes classeurs, il faut
l'enregistrer dans un classeur particulier qui est le perso.xls. Regarde
dans la page débuter d'excelabo comment activer ce classeur si tu ne le
vois pas.
Une autre solution, c'est d'enregistrer ta macro sous forme de macro
complémentaire que tu pourras appeller depuis d'autres classeurs.

Je crée une macro dans une feuille
Si je transfère cette feuille à quelqu'un d'autre la macro sera
automatiquement incluse et fonctionnera (sauf si elle fait appel à des
fichiers externes bien entendu)


En fait tu ne transfères jamais une feuille mais plutôt un classeur
contenant la feuille en question. En transférant un classeur, tu passes
en même temps toutes les macros associées. Donc oui, tes macros
suivront. Bien sur comme tu l'as compris, si ces macros vont ouvrir par
exemple des fichiers situés sur ton disque dur, il y aura un petit
problème chez ton collègue.

Mais si j'ai créé une macro dans un module, et que je m'en sers dans
un



fichier que je dois transférer?


Voir plus haut (perso.xls, macro complémentaire...)
Pour copier une macro d'un classeur dans l'autre, soit tu copies
betement à la main la macro du premier classeur et tu la colles dans un
module du second classeur, soit tu exportes la première, tu
l'enregistres sur ton disque dur (ça te permet de l'envoyer à quelqu'un
d'autre) et tu la réimportes dans le second classeur. Tu peux 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.

Tu peux 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.

Dois-je simplement copier la macro du module vers la feuille en
question



ou
fait-on cela différament?

Les macro c'est comme les temps modernes de Chaplin (quand il est
prit



dans
l'encrenage)
:-)


Cest plus clair ?'
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta







Avatar
Modeste
Bonsour® Rex,
-----Message d'origine-----
Donc si je comprends ça fonctionne comme suit:

Si une macro ne devra servir qu'à une seul chose je la
mets dans la feuille

une seule chose ????

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.

Et si je veux m'en servir dans d'autres fichiers je la
mets 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



Mais maintenant passons à la suite,

Je crée une macro dans une feuille
Si je transfère cette feuille à quelqu'un d'autre la
macro sera

automatiquement incluse et fonctionnera (sauf si elle
fait appel à des

fichiers externes bien entendu)

Mais si j'ai créé une macro dans un module, et que je
m'en sers dans un

fichier que je dois transférer?
Dois-je simplement copier la macro du module vers la
feuille en question ou fait-on cela différament?


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

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

@+

Avatar
twinley
Merci, jps, rien ne vaut l'explication d'un spécialiste.
Et en plus c'est tellement bien expliqué qu'on se sent intelligent...
--
à+twinley
"sabatier" a écrit dans le message
de news:%
que nenni, twinley, sauf si ta route est parsemée d'embûches auquel cas,
la

bouteille ou le cubi a de fortes chances d'arriver vide à destination...si
toutefois il devait rester un peu de vin au fond, tu le mets de côté pour
le

chabrol d'AV...
jps

"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
C'est un peu comme le vin, tu déplaces la bouteille ou le cubi et tu
déplace

le vin en même temps. Je me trompe jps ?
--
à+twinley
"sabatier" a écrit dans le
message

de news:
salut rex
sans trop bien comprendre ton perfide français, si ta macro est dans
un



module de ton classeur, le transfert de ton classeur(fichier)
entraînera



fatalement le transfert de son module....le problème que tu peux
rencontrer

est celui d'éventuelles barres d'outils qui peuvent ne pas suivre...
jps

"RT" a écrit dans le message de
news:m5DYc.230454$
Bonjour

Merci pour la réponse

Donc si je comprends ça fonctionne comme suit:

Si une macro ne devra servir qu'à une seul chose je la mets dans la
feuille

Et si je veux m'en servir dans d'autres fichiers je la mets dans un
module



Bon, d'accord


Mais maintenant passons à la suite,

Je crée une macro dans une feuille
Si je transfère cette feuille à quelqu'un d'autre la macro sera
automatiquement incluse et fonctionnera (sauf si elle fait appel à
des




fichiers externes bien entendu)

Mais si j'ai créé une macro dans un module, et que je m'en sers
dans




un
fichier que je dois transférer?

Dois-je simplement copier la macro du module vers la feuille en
question



ou
fait-on cela différament?

Les macro c'est comme les temps modernes de Chaplin (quand il est
prit



dans
l'encrenage)


Merci de ton aide

A plus tard


Rex

"Philippe" wrote in message
news:29b401c48e78$27ad3920$
Salut,

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.

A +.

-----Message d'origine-----
Bonjour

Quelqu'un peut-il m'aiguiller vers un site ou une ficelle
qui contient le

suivant


Dans les fichiers Excel en VBA il y

Les Personnal, le feuilles , les modules, etc...

Ce que je cherche à comprendre est comment optimaliser la
localisation des

macros

Tant que je ne faisais que "chipoter" il n'y en avait que
4 ou 5 cela ne me

gènais pas trop

Mais maintenant cela devient encombré

Ou faut-il créer les macro que l'on veut employer tous le
temps (en

personnal je suppose)

mais comment décider entre "feuille" "module" et autres


Y a-t-il quelque part un schéma de structure présenté par
quelqu'un

(Misange?)

Cela me serait très utile, de même qu'a d'autres
débutants, j'en suis sûr


Un grand merci et à bientôt

Rex



.



















Avatar
RT
Je suppose que tu as encore les cicatrices pour le prouver !


Je vous quitte

Une formation à donner cet après-midi

A plus tard

Rex


"ru-th" wrote in message
news:
Une fois de plus tu frappe fort


tu n'es pas venu aux rencontres .... et tu connais pourtant ce détail ?
pourtant, elle a menacé le 1er d'entre nous qui en parlerait !

a+
rural thierry
"RT" a écrit dans le message de news:
sBEYc.230585$
Bonjour

Une fois de plus tu frappe fort

Et tout cela un Lundi matin

J'ai sauvegardé ton message et je m'en vais le potasser dans le petit
bois


allongé au pied d'un arbre en écoutant les oiseaux chanter

Merci beaucoup

Et une fois de plus tes conseils font vraiment plaisir

Je te promets que lors de la prochaine rencontre dans le nord (j'habite
dans

le Brabant Wallon , Belgique) je me joindrai à vous

(Et je viendrai en Ferrari, ou du moins avec le pneu)

A plus tard

Rex


"Misange" wrote in message
news:
Bonjour Rex

Tu peux trouver des explications sur ce sujet dans la page
debuter/pap-VBA (pas à pas VBA...)

Pour revenir à ta question :

Si une macro ne devra servir qu'à une seul chose je la mets dans la
feuille


Et si je veux m'en servir dans d'autres fichiers je la mets dans un
module



Pas tout à fait

Si ta 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 tu mets
cette macro dans le module associé à cette feuille.
Si ta macro s'applique à la feuille4 mais pourrait tout aussi bien
s'appliquer à la feuile1, tu la mets dans un module général (normal).
Simplement, il faudra que tu précises dans la macro lorsque nécessaire
la feuille. PAr exemple : si tu fais 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 tu peux, ça ne
gène nullement). En revanche dans un module général, si tu ne précises
pas que ces cellules A1:A4 sont celles de la feuille4, excel
appliquera



ta macro aux cellules de la feuille actuellement active. Si tu viens
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 tu veux utiliser une macro dans tous tes classeurs, il faut
l'enregistrer dans un classeur particulier qui est le perso.xls.
Regarde



dans la page débuter d'excelabo comment activer ce classeur si tu ne
le



vois pas.
Une autre solution, c'est d'enregistrer ta macro sous forme de macro
complémentaire que tu pourras appeller depuis d'autres classeurs.

Je crée une macro dans une feuille
Si je transfère cette feuille à quelqu'un d'autre la macro sera
automatiquement incluse et fonctionnera (sauf si elle fait appel à
des




fichiers externes bien entendu)


En fait tu ne transfères jamais une feuille mais plutôt un classeur
contenant la feuille en question. En transférant un classeur, tu
passes



en même temps toutes les macros associées. Donc oui, tes macros
suivront. Bien sur comme tu l'as compris, si ces macros vont ouvrir
par



exemple des fichiers situés sur ton disque dur, il y aura un petit
problème chez ton collègue.

Mais si j'ai créé une macro dans un module, et que je m'en sers
dans




un
fichier que je dois transférer?


Voir plus haut (perso.xls, macro complémentaire...)
Pour copier une macro d'un classeur dans l'autre, soit tu copies
betement à la main la macro du premier classeur et tu la colles dans
un



module du second classeur, soit tu exportes la première, tu
l'enregistres sur ton disque dur (ça te permet de l'envoyer à
quelqu'un



d'autre) et tu la réimportes dans le second classeur. Tu peux 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.

Tu peux 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.

Dois-je simplement copier la macro du module vers la feuille en
question



ou
fait-on cela différament?

Les macro c'est comme les temps modernes de Chaplin (quand il est
prit



dans
l'encrenage)
:-)


Cest plus clair ?'
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta











Avatar
RT
Merci


Encore une fameuse tartine à ajouter à celle de Misange

Je lis tout cela à mon aise tantôt

Merci pour ta réponse et plus tard

Rex


"Modeste" wrote in message
news:2a7f01c48e89$b8e7cfc0$
Bonsour® Rex,
-----Message d'origine-----
Donc si je comprends ça fonctionne comme suit:

Si une macro ne devra servir qu'à une seul chose je la
mets dans la feuille

une seule chose ????

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.

Et si je veux m'en servir dans d'autres fichiers je la
mets 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



Mais maintenant passons à la suite,

Je crée une macro dans une feuille
Si je transfère cette feuille à quelqu'un d'autre la
macro sera

automatiquement incluse et fonctionnera (sauf si elle
fait appel à des

fichiers externes bien entendu)

Mais si j'ai créé une macro dans un module, et que je
m'en sers dans un

fichier que je dois transférer?
Dois-je simplement copier la macro du module vers la
feuille en question ou fait-on cela différament?


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

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

@+

Avatar
RT
Donc,,

Et si j'ai bien compris

En cas d'emûches,


On débouche


C'est ça?


A plus tard

Rex

"twinley" <twinleym(at)hotmail.com> wrote in message
news:u$
Merci, jps, rien ne vaut l'explication d'un spécialiste.
Et en plus c'est tellement bien expliqué qu'on se sent intelligent...
--
à+twinley
"sabatier" a écrit dans le
message

de news:%
que nenni, twinley, sauf si ta route est parsemée d'embûches auquel cas,
la

bouteille ou le cubi a de fortes chances d'arriver vide à
destination...si


toutefois il devait rester un peu de vin au fond, tu le mets de côté
pour


le
chabrol d'AV...
jps

"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
C'est un peu comme le vin, tu déplaces la bouteille ou le cubi et tu
déplace

le vin en même temps. Je me trompe jps ?
--
à+twinley
"sabatier" a écrit dans le
message

de news:
salut rex
sans trop bien comprendre ton perfide français, si ta macro est dans
un



module de ton classeur, le transfert de ton classeur(fichier)
entraînera



fatalement le transfert de son module....le problème que tu peux
rencontrer

est celui d'éventuelles barres d'outils qui peuvent ne pas suivre...
jps

"RT" a écrit dans le message de
news:m5DYc.230454$
Bonjour

Merci pour la réponse

Donc si je comprends ça fonctionne comme suit:

Si une macro ne devra servir qu'à une seul chose je la mets dans
la





feuille
Et si je veux m'en servir dans d'autres fichiers je la mets dans
un





module

Bon, d'accord


Mais maintenant passons à la suite,

Je crée une macro dans une feuille
Si je transfère cette feuille à quelqu'un d'autre la macro sera
automatiquement incluse et fonctionnera (sauf si elle fait appel à
des




fichiers externes bien entendu)

Mais si j'ai créé une macro dans un module, et que je m'en sers
dans




un
fichier que je dois transférer?

Dois-je simplement copier la macro du module vers la feuille en
question



ou
fait-on cela différament?

Les macro c'est comme les temps modernes de Chaplin (quand il est
prit



dans
l'encrenage)


Merci de ton aide

A plus tard


Rex

"Philippe" wrote in message
news:29b401c48e78$27ad3920$
Salut,

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.

A +.

-----Message d'origine-----
Bonjour

Quelqu'un peut-il m'aiguiller vers un site ou une ficelle
qui contient le

suivant


Dans les fichiers Excel en VBA il y

Les Personnal, le feuilles , les modules, etc...

Ce que je cherche à comprendre est comment optimaliser la
localisation des

macros

Tant que je ne faisais que "chipoter" il n'y en avait que
4 ou 5 cela ne me

gènais pas trop

Mais maintenant cela devient encombré

Ou faut-il créer les macro que l'on veut employer tous le
temps (en

personnal je suppose)

mais comment décider entre "feuille" "module" et autres


Y a-t-il quelque part un schéma de structure présenté par
quelqu'un

(Misange?)

Cela me serait très utile, de même qu'a d'autres
débutants, j'en suis sûr


Un grand merci et à bientôt

Rex



.























1 2