Macro dans une macro

Le
Magic Man
Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.

--
Magic Man
magicman@zefo.ca
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Magic Man
Le #5025271
Pour quoi je pose la question c'est que j'ai une erreur vba comme quoi ma
macro auto_open() est trop grande.
Ma macro auto_open() exécute un script qui à la fin enregistre et ferme le
classeur.
Donc j'ai fais une autre macro pour alléger auto_open() et je veux que
auto_open() appelle mon autre macro avant de fermer mon classeur.

Merci.


"Magic Man"
Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.

--
Magic Man




Jac
Le #5025261
Salut Magic Man,

il suffit de mettre sur une ligne le nom de la macro à appeler. C'est tout.

N'hésite pas à regrouper des actions précises dans des "sous-macro". C'est
pratique pour tester le petit morceau concerné et c'est intéressant aussi
pour du réemploi.
Exemple : les bordures. L'enregistreur en fait tout un fromage car il
s'occupe de tout ce qu'il est possible de faire avec les bordures. Alors que
simplifié et bien aligné, ça peut ne prendre que quelques lignes.
-------------------------------------------------
Sub BORDURESTOUTES()
On Error Resume Next
Selection.Borders(xlEdgeTop).Weight = xlThin
Selection.Borders(xlEdgeBottom).Weight = xlThin
Selection.Borders(xlEdgeLeft).Weight = xlThin
Selection.Borders(xlEdgeRight).Weight = xlThin
Selection.Borders(xlInsideVertical).Weight = xlHairline
Selection.Borders(xlInsideHorizontal).Weight = xlHairline
On Error GoTo 0
End Sub
---------------------------------------------------
En rajoutant ":" à la fin de chaque instruction, et en rapprochant ce qui se
trouve sur la ligne suivante, ça peut tenir sur une ou plusieurs lignes.
C'est sûr qu'ici, dessous, ça ne se voit pas tellement mais collé dans un
module, c'est quand même autre chose:
-------------------------------------------------
Sub BORDURESTOUTES(): On Error Resume Next:
Selection.Borders(xlEdgeTop).Weight = xlThin:
Selection.Borders(xlEdgeBottom).Weight = xlThin:
Selection.Borders(xlEdgeLeft).Weight = xlThin:
Selection.Borders(xlEdgeRight).Weight = xlThin:
Selection.Borders(xlInsideVertical).Weight = xlHairline:
Selection.Borders(xlInsideHorizontal).Weight = xlHairline: On Error GoTo 0:
End Sub
---------------------------------------------------
C'est comme on aime. Moi, j'aime bien en 1 ligne car une fois que ça
fonctionne, je ne reviens plus sur cette fonctionalité. Et ça raccourcit la
longueur du texte écrit dans la macro.
Un puriste dira que c'est plus clean et/ou plus rapide avec un with / end
with. Sans doute mais si c'est deux ou trois fois plus long qu'un nième de
seconde, ça ne me dérange pas vraiment.

Jac


"Magic Man"
Pour quoi je pose la question c'est que j'ai une erreur vba comme quoi ma
macro auto_open() est trop grande.
Ma macro auto_open() exécute un script qui à la fin enregistre et ferme le
classeur.
Donc j'ai fais une autre macro pour alléger auto_open() et je veux que
auto_open() appelle mon autre macro avant de fermer mon classeur.

Merci.


"Magic Man"
Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.

--
Magic Man








Jac
Le #5025251
Salut Magic Man,

il suffit de mettre sur une ligne le nom de la macro à appeler. C'est tout.

N'hésite pas à regrouper des actions précises dans des "sous-macro".
C'est pratique pour tester le petit morceau concerné et c'est intéressant
aussi pour du réemploi.
Exemple : les bordures. L'enregistreur en fait tout un fromage (27 lignes)
car il s'occupe de tout ce qu'il est possible de faire avec les bordures.
Alors que simplifié et bien aligné, ça peut ne prendre que 8 lignes.
-------------------------------------------------
With Selection
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlInsideVertical).Weight = xlHairline
.Borders(xlInsideHorizontal).Weight = xlHairline
End with
---------------------------------------------------
En rajoutant ":" à la fin de chaque instruction, et en rapprochant ce qui se
trouve sur la ligne suivante, ça peut tenir sur une ou plusieurs lignes.

C'est comme on aime. Moi, j'aime bien en 1 ligne car une fois que ça
fonctionne, je ne reviens plus sur cette fonctionalité. Et ça raccourcit la
longueur du texte écrit dans la macro.

Jac


"Magic Man"
Pour quoi je pose la question c'est que j'ai une erreur vba comme quoi ma
macro auto_open() est trop grande.
Ma macro auto_open() exécute un script qui à la fin enregistre et ferme le
classeur.
Donc j'ai fais une autre macro pour alléger auto_open() et je veux que
auto_open() appelle mon autre macro avant de fermer mon classeur.

Merci.


"Magic Man"
Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.

--
Magic Man








"Magic Man"
Pour quoi je pose la question c'est que j'ai une erreur vba comme quoi ma
macro auto_open() est trop grande.
Ma macro auto_open() exécute un script qui à la fin enregistre et ferme le
classeur.
Donc j'ai fais une autre macro pour alléger auto_open() et je veux que
auto_open() appelle mon autre macro avant de fermer mon classeur.

Merci.


"Magic Man"
Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.

--
Magic Man








Filochard
Le #5025181
Pour l'exemple sur les bordures, 3 lignes doivent suffirent

Selection.Borders.Weight = xlThin
Selection.Borders(xlInsideVertical).Weight = xlHairline
Selection.Borders(xlInsideHorizontal).Weight = xlHairline

pour ce qui est de la réduction à une ligne :

Selection.Borders.Weight = xlThin: Selection.Borders(xlInsideVertical).Weight =
xlHairline: Selection.Borders(xlInsideHorizontal).Weight = xlHairline

Ca ne présente aucun intérêt car cela rend les instructions peu lisibles
Misange
Le #5024931
Bonjour
sub mamacro1()
mamacro2
end sub

ou bien

Bonjour
sub mamacro1()
call mamacro2
end sub

sont équivalents. Certains préfèrent mettre le call pour bien mettre en
évidence que ce n'est la nom d'une variable mais celui d'une macro.
Cela dit, je sui surprise du message d'erreur sur une macro trop longue ...
Combien de lignes fait-elle ta macro ?
Elle trop longue ou bien elle met trop de temps et consomme toute la
mémoire ?

Misange


Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.



anonymousA
Le #5024921
Bonjour,

Pour compléter , perso je n'ai jamais eu de message pour macro trop
longue. Par contre , de mémoire, il semblerait d'après des auteurs
reconnus qu'il vaut mieux eviter d'avoir un module dont la taille ,
suite à exportation au format texte, est supérieure à 64Ko.

A+

Bonjour
sub mamacro1()
mamacro2
end sub

ou bien

Bonjour
sub mamacro1()
call mamacro2
end sub

sont équivalents. Certains préfèrent mettre le call pour bien mettre en
évidence que ce n'est la nom d'une variable mais celui d'une macro.
Cela dit, je sui surprise du message d'erreur sur une macro trop longue ...
Combien de lignes fait-elle ta macro ?
Elle trop longue ou bien elle met trop de temps et consomme toute la
mémoire ?

Misange


Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.





Misange
Le #5024911
ps : le bonjour est indispensable aux bonnes relations humaines mais pas
à celui de cette macro :-) inutile donc de mettre bonjour en début de
module, excel ne se vexera pas !
Misange

Bonjour
sub mamacro1()
mamacro2
end sub

ou bien

Bonjour
sub mamacro1()
call mamacro2
end sub

sont équivalents. Certains préfèrent mettre le call pour bien mettre en
évidence que ce n'est la nom d'une variable mais celui d'une macro.
Cela dit, je sui surprise du message d'erreur sur une macro trop longue ...
Combien de lignes fait-elle ta macro ?
Elle trop longue ou bien elle met trop de temps et consomme toute la
mémoire ?

Misange


Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.





Magic Man
Le #5024411
Je ne comprend pas ce que vous voulez dire par bordures ? Mes bordures j'en
ai je les ai fait manuellement mais rien de trop...

"Filochard"
Pour l'exemple sur les bordures, 3 lignes doivent suffirent

Selection.Borders.Weight = xlThin
Selection.Borders(xlInsideVertical).Weight = xlHairline
Selection.Borders(xlInsideHorizontal).Weight = xlHairline

pour ce qui est de la réduction à une ligne :

Selection.Borders.Weight = xlThin:
Selection.Borders(xlInsideVertical).Weight = xlHairline:
Selection.Borders(xlInsideHorizontal).Weight = xlHairline

Ca ne présente aucun intérêt car cela rend les instructions peu lisibles



Magic Man
Le #5024371
Merci ça fonctionne ! :o)
Ma macro originale avait 3000 lignes !

"Misange"
ps : le bonjour est indispensable aux bonnes relations humaines mais pas à
celui de cette macro :-) inutile donc de mettre bonjour en début de
module, excel ne se vexera pas !
Misange

Bonjour
sub mamacro1()
mamacro2
end sub

ou bien

Bonjour
sub mamacro1()
call mamacro2
end sub

sont équivalents. Certains préfèrent mettre le call pour bien mettre en
évidence que ce n'est la nom d'une variable mais celui d'une macro.
Cela dit, je sui surprise du message d'erreur sur une macro trop longue
...
Combien de lignes fait-elle ta macro ?
Elle trop longue ou bien elle met trop de temps et consomme toute la
mémoire ?

Misange


Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.







LSteph
Le #5024051
Bonjour,

appel direct:

Call MaMacro

ou depuis un autre projet:

Application.Run "Perso.xls!retablevents"

--
lSteph

Bonjour,

C'est quoi la commande dans une macro pour appeler une autre macro ?

Merci.



Publicité
Poster une réponse
Anonyme