Excel macros repeter sur plusieurs feuilles

Fermé
MOMO - 21 janv. 2010 à 18:13
 picard - 25 janv. 2010 à 18:24
Bonjour,
J'ai les mêmes opérations à exécuter sur 4 feiulles différentes portant chacune un nom particulier. Je voudrais pouvoir ne pas répèter 3 fois supplémentaires les mêmes instructions.
Si quelqu'un a une solution, merci.

3 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
21 janv. 2010 à 19:24
salut,
tu peux faire un truc du genre :
For Each ws In ActiveWorkbook.Worksheets
    If ws.Name = "Feuil1" Or ws.Name = "Feuil2" Then
        toncode
    End If
Next ws

0
Bonsoir,
Je te remercie, mais avec moi, ça ne marche pas.
J'ai pourtant essayé de respecter srupuleusement ton écriture.
Je ne comprends pas.
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
22 janv. 2010 à 18:30
Re,
peux-tu stp mettre ton code, qu'on regarde ou ça cloche ?
0
Salut et merci,
mon code, c'est 3 fois ça: (pour 3 feuilles différentes)

Sheets("GENERAL").Select
For z = 1 To 50
If Cells(z + 2, 18) = SUPPRIM Then
Range(Cells(z + 2, 18), Cells(z + 2, 41)).Select
Selection.Delete Shift:=xlUp
End If
Next z
J'ai remplacé par:

For Each ws In ActiveWorkbook.Worksheets
If ws.Name = "GENERAL" Or ws.Name = "DROITE" Or ws.Name = "MATERIAU" Then
For z = 1 To 50
If Cells(z + 2, 18) = SUPPRIM Then
Range(Cells(z + 2, 18), Cells(z + 2, 41)).Select
Selection.Delete Shift:=xlUp
End If
Next z
End If
Next ws

J'ai aussi esayé ceci:

Sub Macro1()
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = "Feuil1" Or ws.Name = "Feuil3" Or ws.Name = "Feuil4" Then
If Cells(2, 1) <> "" Then Cells(1, 1).Copy Destination:=Cells(4, 5)
End If
Next ws
End Sub

ça n'opère que sur la feuille active même sur la 2 ou la 5...
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
25 janv. 2010 à 17:12
Salut,
Il fauut que tu précises sur quelle feuille tu travailles dans la boucle, par défaut c'est la feuille active (ActiveSheet) :
Sub Macro1()
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = "Feuil1" Or ws.Name = "Feuil3" Or ws.Name = "Feuil4" Then
If ws.Cells(2, 1) <> "" Then ws.Cells(1, 1).Copy Destination:=ws.Cells(4, 5)
End If
Next ws
End Sub

0
Merci, cette fois, ça marche.
0