Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Boucle pour plusieiurs feuilles

  • Initiateur de la discussion Olette
  • Date de début
O

Olette

Guest
Bonjour,

Je souhaiterai traiter des données sur différents onglets.
Le tratietment pour une feuille est deja ecroit mais je n'arrive pas à passer de feuille en feuille pour lui faire executer ma macro ...

Quelqu'un aurait-il une soluce ?

D'avance, Merci

Olette
 
@

@Christophe@

Guest
Bonjour,

Place le code suivant dans un module:

Option Explicit
Dim WS As Worksheet

Sub test()
For Each WS In Worksheets

'''Ton code
MsgBox WS.Name
'''

Next WS
End Sub


Bonne chance

@Christophe@
 
O

Olette

Guest
J'ai pris un classeur vierge et j'ai voulu tester ta macro dont voila le code:


Option Explicit
Dim WS As Worksheet

Sub Macro1()

For Each WS In Worksheets
Range("A1").Select
ActiveCell.Value = "OK"
MsgBox WS.Name
Next WS

End Sub

Au résultat, Ok n'est inscrit que sur la première feuille ... et pas sur les autres.
C'est sans doute moi qui n'est pas su la mettre en place mais je sollicite une fois de plus ton aide !!!
Merci pour le coup de main.

Olette
 
@

@Christophe@

Guest
Bonjour,

Tu as oublié de lui dire WS. devant range

Sans le WS. il fait ce que tu demande sur la feuille active:

Voila le code:

Option Explicit
Dim WS As Worksheet

Sub Macro1()

For Each WS In Worksheets
WS.Range("A1").Value = "OK"
Next WS
End Sub

Bonne chance

@Christophe@
 
O

Olette

Guest
J'abuse encore un peu de ton aide mais je me pose encore une question.
Ma macro est assez longue, dois-je rajouter WS. devant toutes les lignes de commande ?
 
O

Olette

Guest
J'abuse encore un peu de ton aide mais je me pose encore une question.
Ma macro est assez longue, dois-je rajouter WS. devant toutes les lignes de commande ?
 
@

@Christophe@

Guest
Re

Non, t'inquite

Il te suffit alors d'activer la feuille en début de macro, comme cela.
J'ai mes des App...Screenupdating pour que tu ne vois pas la macro s'exécuter.


Option Explicit
Dim WS As Worksheet

Sub Macro1()
Application.ScreenUpdating = False 'Pour ne pas voir les changement s'éffectuer
For Each WS In Worksheets
WS.Activate
Range("A1").Value = "OK"
Next WS
Application.ScreenUpdating = True 'Pas oublier de remettre à true!
End Sub


Et voila

@Christophe@
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…