macro bouclée sur certaines feuilles

cabsen

XLDnaute Junior
Bonjour tout le monde,

Mon problème du jour est le suivant :
J'ai enregistré une macro de formatage que je lance à l'aide d'un raccourci. Elle fonctionne très bien mais elle concerne 52 feuilles sur 56 présentes dans mon classeur. À la main, c'est un peu long, mais c'est surtout fastidieux…

Mes 52 feuilles en question sont nommées sem01, sem02,… , sem52.
Existe-t-il une boucle simple (genre "if… until") à insérer quelque part (au début ?) dans la macro pour automatiser le processus ?

Merci de m'avoir lu et de vos éventuelles réponses.
 

Luki

XLDnaute Accro
Re : macro bouclée sur certaines feuilles

bonjour cabsen

en admettant que le nom des autres feuilles ne commence pas par "sem",essaie:

Code:
Dim Wks As Worksheet

For Each Wks In Worksheets
     If Left(Wks.Name, 3) = "sem" Then
     
     ' ton code ici
    
     
     End If

Next Wks
Attention à la casse: "Sem" n'est pas "sem" ni "SEM"
 

cops71

XLDnaute Nouveau
Re : macro bouclée sur certaines feuilles

Pour moi, le code serait le même que Luki avec quelque modifications :
Code:
Option Compare text 'pour éviter les erreurs de casse (maj:minuscule) à mettre en haut du module
Sub MiseEnForme()
    Dim Wks As Worksheet

    For Each Wks In Worksheets
        If Left(Wks.Name, 3) = "sem" Then
     
           ' le nom de ta macro de formatage    
     
        End If

    Next Wks
End sub

Voilà
 

cabsen

XLDnaute Junior
Re : macro bouclée sur certaines feuilles

Merci !

La macro semble fonctionner et parvenir à son terme (elle ne plante pas l'application…) mais les modifications ne sont appliquées qu'à la feuille active au moment du lancement de la macro.

J'ai cru lire dans le forum qu'une feuille devait être active pour pouvoir être modifiée ? Peut-on insérer quelque chose comme "Active.Sheet…" ?
 

bqtr

XLDnaute Accro
Re : macro bouclée sur certaines feuilles

Bonjour cabsen, cops71, Luki

Il faut que tu te réfères à la feuille, faire précéder tes instructions de la variable Wks. Exemple :

Code:
Option Compare Text 'pour éviter les erreurs de casse (maj:minuscule) à mettre en haut du module
Sub MiseEnForme()
Dim Wks As Worksheet
    
    For Each Wks In Worksheets
        If Left(Wks.Name, 3) = "sem" Then
          Wks.Range("A1:C10").Interior.ColorIndex = 4
        End If
    Next Wks
    
End Sub

Ou si tu as beaucoup de chose à faire sur chaque feuille, pour éviter de réecrire Wks, tu utilises l'instruction With/End With.
Dans ce cas tu dois activer la feuille. Exemple:

Code:
Option Compare Text 'pour éviter les erreurs de casse (maj:minuscule) à mettre en haut du module
Sub MiseEnForme()
Dim Wks As Worksheet
   
    For Each Wks In Worksheets
        If Left(Wks.Name, 3) = "sem" Then
           With Wks
             .Activate
             .Range("A1:C10").Interior.ColorIndex = 4
           End With
        End If
    Next Wks
    
End Sub

Bonne fin d'après-midi
 

cops71

XLDnaute Nouveau
Re : macro bouclée sur certaines feuilles

Re!

Tout dépend de ce que tu as mis dans ta macro de formatage...

Soit tu rajoutes
Code:
sheets(wks.name).select
'code de ta macro

Soit tu rajoutes dans le code de ta macro avant chaque range utilisé
Code:
Sheets(wks.name).range(...)...

@+