OVH Cloud OVH Cloud

Connaitre la worksheets d'une macro

13 réponses
Avatar
Ludovic Laé
Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance

10 réponses

1 2
Avatar
JLuc
*Bonjour Ludovic*,
J'ai pas tout compris à ta demande, mais si tu mets ta macro dans un
module normale, tu y aura accès de n'importe où :o)

Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en référence à
d'autre fonction. Cela me permettrait de rendre le code indépendant du nom de
la wotksheet ou de sa position dans le classeur. Est-ce possible?

Merci d'avance


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
Ludovic Laé
Je ne veux pas mettre ma macro dans un module, elle travaille sur la
worksheets ou elle se trouve. en revanche, elle appelle des sub qui se
trouvent dans des modules et dont un des arguments est justement la
worksheet.

sub MaMacroDansLaWorksheet()

'Travail travail

un_resultat_intermediaire= Une_fonction_Ailleurs(Worksheet(1))

'Travail travail

end sub

Le problème étant que si je change l'ordre des feuilles, ca ne marche
plus. Idem si je passe le nom en paramètre.
La macro étant dans une worksheet, n'est il pas possible de récupérer
soit le nom, soit le numéro, soit directement l'objet.

Pour les workbook, c'est faisable : on utilise ThisWorkbook qui pointe
vers le workbook ou se trouve le code.

Est-ce plus clair ? :)

PS : ThisWorksheet ne marche pas :)

*Bonjour Ludovic*,
J'ai pas tout compris à ta demande, mais si tu mets ta macro dans un
module normale, tu y aura accès de n'importe où :o)

Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance





Avatar
lSteph
Bonjour,
Alt+F11
va voir dans VBE c'est là que tout se passe.
Selon tes propos il y a quelques points confus qui laissent envisager des
hypothèses diverses sur le fond:

-Lorsque tu crée une macro, elle ne s'enregistre pas dans une Worksheet mais
dans un module standard.
-En revanche si tu as écrit cette macro via l'onglet code de la feuille tu
te trouves dans le private module de celle-ci.
Ce n'est pas le bon endroit pour faire du global.
-Si tu souhaitais , à juste titre l'utiliser pour une procèdure
événementielle, c'est le bon endroit.
-Pour appeler une macro selon événement ou feuilles différents tu peux
écrire la macro dans un module
et utiliser toute Private Sub pour appeler ainsi:
call mamacro.
-Si tu veux détecter un même événement à toutes les feuilles du classeur tu
peux utiliser ThisWorkbook et dans le déroulant gauche
sélectionner Workbook, dans celui de droite tu trouveras les événements de
niveau classeur, dont ceux applicables à n'importe quelle feuille.
- Si tu veux utiliser des macros identiques dans différents classeurs
utilise le classeur de macros personnelles.

Cordialement.

lSteph
"Ludovic Laé" a écrit dans le message de news:
%
Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance


Avatar
JLuc
*Bonjour Ludovic Laé*,


Je ne veux pas mettre ma macro dans un module, elle travaille sur la
worksheets ou elle se trouve. en revanche, elle appelle des sub qui se
trouvent dans des modules et dont un des arguments est justement la
worksheet.

sub MaMacroDansLaWorksheet()

'Travail travail

un_resultat_intermediaire= Une_fonction_Ailleurs(Worksheet(1))
** Dans ce cas, utilise le nom de la feuille :

un_resultat_intermediaire = Feuil1.Une_fonction_Ailleurs


'Travail travail

end sub

Le problème étant que si je change l'ordre des feuilles, ca ne marche plus.
Idem si je passe le nom en paramètre.
La macro étant dans une worksheet, n'est il pas possible de récupérer soit le
nom, soit le numéro, soit directement l'objet.

Pour les workbook, c'est faisable : on utilise ThisWorkbook qui pointe vers
le workbook ou se trouve le code.

Est-ce plus clair ? :)

PS : ThisWorksheet ne marche pas :)

*Bonjour Ludovic*,
J'ai pas tout compris à ta demande, mais si tu mets ta macro dans un module
normale, tu y aura accès de n'importe où :o)

Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance





--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
lSteph
...(suite)...
outre le libellé de la feuille .Name
ou
son numéro dans l'ordre des feuilles Worksheets(n)
on peut en dur faire référence au CodeName
Feuil1.

Cordialement.

lSteph
"Ludovic Laé" a écrit dans le message de news:
%
Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance


Avatar
Ludovic Laé
bon
Dans le pire des cas, je peux faire

Set Feuille_Active¬tiveSheet
Activate
Set Feuille_Du_Code¬tiveSheet
Feuille_Active.Activate

Auquel cas, Feuille_Du_Code pointe bien vers la feuille contenant le
code et je remets la feuille active après coup (en priant pour qu'il
s'agisse d'une worksheet)

Testé , ca marche mais quelle lourdeur...


*Bonjour Ludovic*,
J'ai pas tout compris à ta demande, mais si tu mets ta macro dans un
module normale, tu y aura accès de n'importe où :o)

Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance





Avatar
Ludovic Laé
Ha ca, c'est beaucoup mieux :)

worksheets(Name) pointe bien vers la worksheet contenant le code.

Merci beaucoup :)


...(suite)...
outre le libellé de la feuille .Name
ou
son numéro dans l'ordre des feuilles Worksheets(n)
on peut en dur faire référence au CodeName
Feuil1.

Cordialement.

lSteph
"Ludovic Laé" a écrit dans le message de news:
%
Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance






Avatar
lSteph
...peut-être pour l'instant mais le mieux (Jluc l'a évoqué aussi) c'est le
CodeName
exemple:
Dans l'explorateur de projet à droite dans VBE (sinon affiche le)
dans les feuilles tu peux très bien trouver
Feuil1(Feuil1)
Feuil2(Mafeuille)
Feuil3(Feuil6)
Feuil4(Feuil3)
Feuil5(Feuil5)

Alors plutôt qu'utiliser exemple:
Worksheets("Mafeuille").activate
Tu peux dire direct:
Feuil2.activate

'lSteph

"Ludovic Laé" a écrit dans le message de news:

Ha ca, c'est beaucoup mieux :)

worksheets(Name) pointe bien vers la worksheet contenant le code.

Merci beaucoup :)


...(suite)...
outre le libellé de la feuille .Name
ou
son numéro dans l'ordre des feuilles Worksheets(n)
on peut en dur faire référence au CodeName
Feuil1.

Cordialement.

lSteph
"Ludovic Laé" a écrit dans le message de news:
%
Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance







Avatar
Ludovic Laé
La solution utilisant Worksheets(Name) est indépendante du nom de la
worksheet. Le nom ("feuil1") et la position (1) sont des choses qui
peuvent changer ; c'est pour cette raison que je voulais un pointeur
vers l'objet indépendant de ceux-ci.

Merci à vous.

...peut-être pour l'instant mais le mieux (Jluc l'a évoqué aussi) c'est le
CodeName
exemple:
Dans l'explorateur de projet à droite dans VBE (sinon affiche le)
dans les feuilles tu peux très bien trouver
Feuil1(Feuil1)
Feuil2(Mafeuille)
Feuil3(Feuil6)
Feuil4(Feuil3)
Feuil5(Feuil5)

Alors plutôt qu'utiliser exemple:
Worksheets("Mafeuille").activate
Tu peux dire direct:
Feuil2.activate

'lSteph

"Ludovic Laé" a écrit dans le message de news:

Ha ca, c'est beaucoup mieux :)

worksheets(Name) pointe bien vers la worksheet contenant le code.

Merci beaucoup :)


...(suite)...
outre le libellé de la feuille .Name
ou
son numéro dans l'ordre des feuilles Worksheets(n)
on peut en dur faire référence au CodeName
Feuil1.

Cordialement.

lSteph
"Ludovic Laé" a écrit dans le message de news:
%
Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance










Avatar
Ludovic Laé
Autant pour moi, je n'avais pas compris la réponse.

...peut-être pour l'instant mais le mieux (Jluc l'a évoqué aussi) c'est le
CodeName
exemple:
Dans l'explorateur de projet à droite dans VBE (sinon affiche le)
dans les feuilles tu peux très bien trouver
Feuil1(Feuil1)
Feuil2(Mafeuille)
Feuil3(Feuil6)
Feuil4(Feuil3)
Feuil5(Feuil5)

Alors plutôt qu'utiliser exemple:
Worksheets("Mafeuille").activate
Tu peux dire direct:
Feuil2.activate

'lSteph

"Ludovic Laé" a écrit dans le message de news:

Ha ca, c'est beaucoup mieux :)

worksheets(Name) pointe bien vers la worksheet contenant le code.

Merci beaucoup :)


...(suite)...
outre le libellé de la feuille .Name
ou
son numéro dans l'ordre des feuilles Worksheets(n)
on peut en dur faire référence au CodeName
Feuil1.

Cordialement.

lSteph
"Ludovic Laé" a écrit dans le message de news:
%
Bonjour,
j'ai créer une macro dans une worksheet et j'aimerais justement bien
connaître la worksheet qui contient cette macro pour la passer en
référence à d'autre fonction. Cela me permettrait de rendre le code
indépendant du nom de la wotksheet ou de sa position dans le classeur.
Est-ce possible?

Merci d'avance










1 2