OVH Cloud OVH Cloud

Macro sur plusieurs feuilles

13 réponses
Avatar
Caroline L.
Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur, afficher
certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque je
sélectionne une seule feuille à la fois. Par contre, si je sélectionne 3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline

10 réponses

1 2
Avatar
Philippe Noss
Bonsoir
oui pour toutes les feuilles d'un classeur
For Each F In ThisWorkbook.Sheets ' ('Pour chaque feuille de ce
classeur)

F.Activate
'tu mets ta macro ici
Next

Sinon tu peux selectionner les feuilles en rajoutantpar exemple
For Each f In ThisWorkbook.SheetsSelect Case f.Index
Case 1, 3, 4
f.Activate
'tu mets ta macro ici
End Select
Next
il faudra paut etre adpater un peu le code de ta macro
http://nossphil.perso.cegetel.net/exoutils.html
Avatar
LSteph
Bonjour Caroline,

Option explicit
Sub masub()
Dim wSh as worksheet
For each wSh in ActiveWorkbook.Worksheets
wSh.activate
'faireicilamacroquifaittoutcequelledoitdanslafeuille
next
end sub

'lSteph
nb: (Il ne s'agit peut-être que de feuilles et pas de graphiques et celles
que l'on veut traiter
appartiennent peut-être au classeur actif et non forcément celui qui
contient la macro)


"Caroline L." a écrit dans le message de news:

Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur,
afficher
certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque je
sélectionne une seule feuille à la fois. Par contre, si je sélectionne 3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline




Avatar
Caroline L.
Bonjour LSteph,

Merci pour ton aide !
Ce que tu proposes fonctionne (on se rapproche) mais je ne veux pas que la
macro s'applique sur toutes les feuilles du classeur, SEULEMENT sur les
feuilles que j'aurai sélectionnées. Tu vois ? Quelle est la petite subtilité
à ajouter ?

Merci

Caroline


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

Bonjour Caroline,

Option explicit
Sub masub()
Dim wSh as worksheet
For each wSh in ActiveWorkbook.Worksheets
wSh.activate
'faireicilamacroquifaittoutcequelledoitdanslafeuille
next
end sub

'lSteph
nb: (Il ne s'agit peut-être que de feuilles et pas de graphiques et celles
que l'on veut traiter
appartiennent peut-être au classeur actif et non forcément celui qui
contient la macro)


"Caroline L." a écrit dans le message de news:

Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur,
afficher
certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque
je


sélectionne une seule feuille à la fois. Par contre, si je sélectionne 3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline








Avatar
bourby
bonsoir Caroline,

bébébégayerais-tu l'envoi des messages sur le forum?

Pour sélectionner 3 feuilles:

option base=1
sub zz()
Dim sh Liste(3) As String
Liste(1) = "Feuil1"
Liste(2) = "Feuil2"
Liste(3) = "Feuil3"
Sheets(Liste).Select
si tu veux juste mettre une formule identique en A1:
range("A1").activate
activecell.formula=xxxxxx

Mais si tu veux faire des choses plus sophistiquées:
for i=lbound(liste) to ubound(list)
sheets(liste(i)).activate

ici: ton code; [en invoquant toutes les plages que tu manipules par:
Activesheet.range("xx") ]


next i
end sub


Cordialement

Bourby
Caroline L. wrote:
Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur, afficher
certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque je
sélectionne une seule feuille à la fois. Par contre, si je sélectionne 3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline




Avatar
Caroline L.
Bonsoir bourby,

bébébégayerais-tu l'envoi des messages sur le forum?
Hein ? Quoi ?


Je ne cherche pas comment sélectionner 3 feuilles. Le problème c'est que
j'ai une macro qui ne fonctionne pas très bien lorsque je la lance en ayant
sélectionner plusieurs feuilles (avec Shitf).

Caroline


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

bonsoir Caroline,


Pour sélectionner 3 feuilles:

option base=1
sub zz()
Dim sh Liste(3) As String
Liste(1) = "Feuil1"
Liste(2) = "Feuil2"
Liste(3) = "Feuil3"
Sheets(Liste).Select
si tu veux juste mettre une formule identique en A1:
range("A1").activate
activecell.formula=xxxxxx

Mais si tu veux faire des choses plus sophistiquées:
for i=lbound(liste) to ubound(list)
sheets(liste(i)).activate

ici: ton code; [en invoquant toutes les plages que tu manipules par:
Activesheet.range("xx") ]


next i
end sub


Cordialement

Bourby
Caroline L. wrote:
Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur,
afficher


certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque
je


sélectionne une seule feuille à la fois. Par contre, si je sélectionne 3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline






Avatar
Caroline L.
Bonsoir Philippe,

Je ne suis pas certaine de comprendre ce que tu me proposes... je fais des
tests

je crois que ta deuxième partie de réponse se rapproche. Mais comment
"commencer" le code, parce que je ne peux pas placer en tout début le code
suivant :
For Each f In ThisWorkbook.SheetsSelect Case f.Index
Case 1, 3, 4
f.Activate


Merci de m'aider

Caroline


"Philippe Noss" a écrit dans le message de news:

Bonsoir
oui pour toutes les feuilles d'un classeur
For Each F In ThisWorkbook.Sheets ' ('Pour chaque feuille de ce
classeur)

F.Activate
'tu mets ta macro ici
Next

Sinon tu peux selectionner les feuilles en rajoutantpar exemple
For Each f In ThisWorkbook.SheetsSelect Case f.Index
Case 1, 3, 4
f.Activate
'tu mets ta macro ici
End Select
Next
il faudra paut etre adpater un peu le code de ta macro
http://nossphil.perso.cegetel.net/exoutils.html



Avatar
LSteph
Re,
alors si j'ai bien compris tu es en groupe de travail
Donc plusieurs feuilles sont déjà sélectionées tout ce que tu fera sur
activesheet sera retenu pour les autres!

lSteph

"Caroline L." a écrit dans le message de news:

Bonjour LSteph,

Merci pour ton aide !
Ce que tu proposes fonctionne (on se rapproche) mais je ne veux pas que la
macro s'applique sur toutes les feuilles du classeur, SEULEMENT sur les
feuilles que j'aurai sélectionnées. Tu vois ? Quelle est la petite
subtilité
à ajouter ?

Merci

Caroline


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

Bonjour Caroline,

Option explicit
Sub masub()
Dim wSh as worksheet
For each wSh in ActiveWorkbook.Worksheets
wSh.activate
'faireicilamacroquifaittoutcequelledoitdanslafeuille
next
end sub

'lSteph
nb: (Il ne s'agit peut-être que de feuilles et pas de graphiques et
celles
que l'on veut traiter
appartiennent peut-être au classeur actif et non forcément celui qui
contient la macro)


"Caroline L." a écrit dans le message de news:

Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur,
afficher
certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque
je


sélectionne une seule feuille à la fois. Par contre, si je sélectionne
3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline












Avatar
Caroline L.
Re-bonsoir,

hum, je ne comprends pas ce que tu veux dire. J'ai fait le test en ajoutant
ton code à mon code et voici.
J'ai une dizaine de feuilles et j'ai sélectionnées 3 d'entre-elle et là j'ai
lancé la macro. Résultat : toutes les feuilles du classeur ont été affectées
par la macro alors que je désire que SEULES LES FEUILLES PRÉALABLEMENT
SÉLECTIONNÉES soit affectées par la macro.

Groupe de travail veut-il dire que j'ai sélectionnées plusieurs feuilles ?


Caroline


"LSteph" a écrit dans le message de news:
#K$
Re,
alors si j'ai bien compris tu es en groupe de travail
Donc plusieurs feuilles sont déjà sélectionées tout ce que tu fera sur
activesheet sera retenu pour les autres!

lSteph

"Caroline L." a écrit dans le message de news:

Bonjour LSteph,

Merci pour ton aide !
Ce que tu proposes fonctionne (on se rapproche) mais je ne veux pas que
la


macro s'applique sur toutes les feuilles du classeur, SEULEMENT sur les
feuilles que j'aurai sélectionnées. Tu vois ? Quelle est la petite
subtilité
à ajouter ?

Merci

Caroline


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

Bonjour Caroline,

Option explicit
Sub masub()
Dim wSh as worksheet
For each wSh in ActiveWorkbook.Worksheets
wSh.activate
'faireicilamacroquifaittoutcequelledoitdanslafeuille
next
end sub

'lSteph
nb: (Il ne s'agit peut-être que de feuilles et pas de graphiques et
celles
que l'on veut traiter
appartiennent peut-être au classeur actif et non forcément celui qui
contient la macro)


"Caroline L." a écrit dans le message de news:

Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur,
afficher
certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien
lorsque




je
sélectionne une seule feuille à la fois. Par contre, si je
sélectionne




3
feuilles par exemple, tout est correct sur une feuille mais pas sur
les




autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro
qui




dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline
















Avatar
michdenis
Bonjour Caroline,

Essaie ceci :

'----------------------------------------
Sub MacroSurPlusieursFeuilles()

Dim Sh As Worksheet, Nom As String
Nom = ActiveSheet.Name

Application.ScreenUpdating = False
For Each Sh In ActiveWindow.SelectedSheets
Sh.Activate
'Ta macro

Next

Sheets(Nom).Select
Set Sh = Nothing

End Sub
'----------------------------------------


Salutations!



"Caroline L." a écrit dans le message de news:
Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur, afficher
certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque je
sélectionne une seule feuille à la fois. Par contre, si je sélectionne 3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline
Avatar
Caroline L.
Bonsoir MichDenis,

Super ! Ca fonctionne. Je suis très heureuse.
Gros gros merci à toi !

Bonne fin de soirée

Caroline


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

Bonjour Caroline,

Essaie ceci :

'----------------------------------------
Sub MacroSurPlusieursFeuilles()

Dim Sh As Worksheet, Nom As String
Nom = ActiveSheet.Name

Application.ScreenUpdating = False
For Each Sh In ActiveWindow.SelectedSheets
Sh.Activate
'Ta macro

Next

Sheets(Nom).Select
Set Sh = Nothing

End Sub
'----------------------------------------


Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour à tous !

J'ai une macro qui fait une série d'actions (enlever de la couleur,
afficher

certaines lignes et colonnes, imprimer, remettre la couleur, masquer
certaines lignes et colonnes). Cette macro fonctionne très bien lorsque je
sélectionne une seule feuille à la fois. Par contre, si je sélectionne 3
feuilles par exemple, tout est correct sur une feuille mais pas sur les
autres (les actions de la macro ne fonctionnent pas sur toutes les
feuilles).
Y a t-il une certaine ligne de code à insérer au début de la macro qui
dirait : Fait la macro de A à Z sur chaque feuille.

Merci à l'avance pour vos idées

Caroline





1 2