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

Macro accessible sur différents classeurs

8 réponses
Avatar
Bill2
Bonjour à tous,

Voilà, j'ai actuellement une macro fonctionnelle qui met permet de retraiter
des numéros siret dans une colonne (suppression, de caractères inutiles,
mise eu format texte, vérification de la taille, etc.)


J'aimerai pouvoir utiliser cette macro dans différents classeurs qui me
parviendrons.
La solution "bête" serait de recopier cette macro dans chaque classeur où
elle pourrait êter utile.

Mais je souhaiterai plutot savoir comment faire pour la rendre accessible à
tous les classeurs "ouverts".

Actuellement, dans le classeur ou est la macro, j'ai fait en sorte que le
code de vérification s'execute sur la colonne en cours, comme ça, même si le
numero de siret ne se trouve pas dans la colonne prévue, la macro se lance
sur la colonne "en cours".

Je suis donc aussi prenneur d'un bout de code pour que la macro s'execute
sur le classeur et la feuille en cours, et que cette macro soit accessible
de n'importe où.

D'avance, merci à vous pour votre aide.

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/

8 réponses

Avatar
Philippe.R
Bonjour,
Si tu es le seul utilisateur de cette macro, tu peux la stocker dans le
classeur perso.xls ; sinon, tu l'enregistres comme macro complémentaire en
la copiant dans un classeur vierge que tu enregistres au format .xla
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Bill2" a écrit dans le message de
news:
Bonjour à tous,

Voilà, j'ai actuellement une macro fonctionnelle qui met permet de
retraiter des numéros siret dans une colonne (suppression, de caractères
inutiles, mise eu format texte, vérification de la taille, etc.)


J'aimerai pouvoir utiliser cette macro dans différents classeurs qui me
parviendrons.
La solution "bête" serait de recopier cette macro dans chaque classeur où
elle pourrait êter utile.

Mais je souhaiterai plutot savoir comment faire pour la rendre accessible
à tous les classeurs "ouverts".

Actuellement, dans le classeur ou est la macro, j'ai fait en sorte que le
code de vérification s'execute sur la colonne en cours, comme ça, même si
le numero de siret ne se trouve pas dans la colonne prévue, la macro se
lance sur la colonne "en cours".

Je suis donc aussi prenneur d'un bout de code pour que la macro s'execute
sur le classeur et la feuille en cours, et que cette macro soit accessible
de n'importe où.

D'avance, merci à vous pour votre aide.

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Bill2
Philippe.R wrote:
Bonjour,
Si tu es le seul utilisateur de cette macro, tu peux la stocker dans
le classeur perso.xls ; sinon, tu l'enregistres comme macro
complémentaire en la copiant dans un classeur vierge que tu
enregistres au format .xla


Ce que j'ai fait :
J'ai choisi la commande "enregistrer une macro"
Et là, y'a la ligne "entregistrer la macro dans", et j'ai choisi "Classeur
de macros personnelles"

Et hop, il m'a créer un classeur PERSONAL.xlsb, qui répond impec à mes
besoins :)

Merci pour votre aide, ça m'a donné une bonne piste !


--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/

Avatar
Bill2
Re bonjour,

Ma macro effectue des copier/coller d'une feuille à une autre
Pour faire ça, le code a, visiblement, besoin que la feuille soit "activée"
donc sheets("MaFeuille").select

lors du traitement, on voit donc toutes ces activations de feuille, ce qui
ralenti énormément la macro
(ma macro répartit des données d'une feuille 1 en six feuilles, donc les
allez/retour entre feuilles sont très très nombreux !)

Existe-t-il un moyen de "désactiver" cet affichage, pour ne le rétablir qu'à
la fin du traitement ?

Merci d'avance pour ce ptit pb.
Sinon, on laissera tourner la macro entre midi et deux ;)

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
Avatar
Philippe.R
Re,
l'instruction application.ScreenUpdatingúlse en début de macro, avec
application.ScreenUpdating=true à la fin, empêche le rafraichissement
d'écran et fait gagner un peu de temps
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Bill2" a écrit dans le message de
news:
Re bonjour,

Ma macro effectue des copier/coller d'une feuille à une autre
Pour faire ça, le code a, visiblement, besoin que la feuille soit
"activée"
donc sheets("MaFeuille").select

lors du traitement, on voit donc toutes ces activations de feuille, ce qui
ralenti énormément la macro
(ma macro répartit des données d'une feuille 1 en six feuilles, donc les
allez/retour entre feuilles sont très très nombreux !)

Existe-t-il un moyen de "désactiver" cet affichage, pour ne le rétablir
qu'à la fin du traitement ?

Merci d'avance pour ce ptit pb.
Sinon, on laissera tourner la macro entre midi et deux ;)

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Jacky
Bonjour,
Ma macro effectue des copier/coller d'une feuille à une autre
Pour faire ça, le code a, visiblement, besoin que la feuille soit
"activée"
donc sheets("MaFeuille").select
Ben non, pour faire un copier /coller l'activation ou la sélection de la

feuille n'est pas nécessaire
'------------
Sub jj()
'Copie tout
[Feuil1!a1:a10].Copy [feuil2!a10]

'OU seulement les valeurs
[Feuil1!a1:a10].Copy
[feuil2!b10].PasteSpecial Paste:=xlPasteValues
End Sub
'--------------
--
Salutations
JJ


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

Re bonjour,

Ma macro effectue des copier/coller d'une feuille à une autre
Pour faire ça, le code a, visiblement, besoin que la feuille soit
"activée"
donc sheets("MaFeuille").select

lors du traitement, on voit donc toutes ces activations de feuille, ce qui
ralenti énormément la macro
(ma macro répartit des données d'une feuille 1 en six feuilles, donc les
allez/retour entre feuilles sont très très nombreux !)

Existe-t-il un moyen de "désactiver" cet affichage, pour ne le rétablir
qu'à la fin du traitement ?

Merci d'avance pour ce ptit pb.
Sinon, on laissera tourner la macro entre midi et deux ;)

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Jacky
Re...
Et pour mettre toutes les chances de gain de temps de son coté;
Désactivé le calcul automatique pendant la copie et le rafraichissement de
l'écran
'---------
Sub jj()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Copie tout
[Feuil1!a1:a10].Copy [feuil2!a1]
'OU seulement les valeurs
[Feuil1!a1:a10].Copy
[feuil2!b11].PasteSpecial Paste:=xlPasteValues
Cells.EntireColumn.AutoFit
Application.Calculation = xlCalculationAutomatic
End Sub
'------------

--
Salutations
JJ


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

Bonjour,
Ma macro effectue des copier/coller d'une feuille à une autre
Pour faire ça, le code a, visiblement, besoin que la feuille soit
"activée"
donc sheets("MaFeuille").select
Ben non, pour faire un copier /coller l'activation ou la sélection de la

feuille n'est pas nécessaire
'------------
Sub jj()
'Copie tout
[Feuil1!a1:a10].Copy [feuil2!a10]

'OU seulement les valeurs
[Feuil1!a1:a10].Copy
[feuil2!b10].PasteSpecial Paste:=xlPasteValues
End Sub
'--------------
--
Salutations
JJ


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

Re bonjour,

Ma macro effectue des copier/coller d'une feuille à une autre
Pour faire ça, le code a, visiblement, besoin que la feuille soit
"activée"
donc sheets("MaFeuille").select

lors du traitement, on voit donc toutes ces activations de feuille, ce
qui ralenti énormément la macro
(ma macro répartit des données d'une feuille 1 en six feuilles, donc les
allez/retour entre feuilles sont très très nombreux !)

Existe-t-il un moyen de "désactiver" cet affichage, pour ne le rétablir
qu'à la fin du traitement ?

Merci d'avance pour ce ptit pb.
Sinon, on laissera tourner la macro entre midi et deux ;)

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/







Avatar
Bill2
Jacky wrote:
Re...
Et pour mettre toutes les chances de gain de temps de son coté;
Désactivé le calcul automatique pendant la copie et le
rafraichissement de l'écran



Le calcul est déjà désactivé ;)
donc c'est tout bon !
--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/

Avatar
Bill2
Jacky wrote:
Bonjour,
Ma macro effectue des copier/coller d'une feuille à une autre
Pour faire ça, le code a, visiblement, besoin que la feuille soit
"activée"
donc sheets("MaFeuille").select
Ben non, pour faire un copier /coller l'activation ou la sélection de

la feuille n'est pas nécessaire
'------------
Sub jj()
'Copie tout
[Feuil1!a1:a10].Copy [feuil2!a10]

'OU seulement les valeurs
[Feuil1!a1:a10].Copy
[feuil2!b10].PasteSpecial Paste:=xlPasteValues
End Sub
'--------------



ben, qd je fais un activeWoorkbook.Sheet("MaFeuille").range("....").copy, ça
me jette ...

il faut que je lui mette ça :
activeWoorkbook.Sheet("MaFeuille").Select
range("....").select
selection.copy

Et là, le code se déroule sans pb

Bref, je désactive l'affichage, et hop ! C'est tout bon !

Merci à vous tous :p

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/