Microsoft 365 Répétition action sur plusieurs feuille d'un classeur

castor

XLDnaute Nouveau
Bonjour à tous,

Je cherche à écrire un macro qui permettrait de réaliser une même action (écriture caleur, mise en forme,...) sur plusieurs feuilles d'un même classeur mais pas toutes.
J'ai essayé ce code :
VB:
Dim fl As Worksheet
For Each fl In Worksheets
  If fl.Name <> "Récap" And fl.Name <> "Paramètres" Then 'attention aux noms de feuilles avec accent
      Range("B10:B1000").Select
      Selection.ClearContents
  End If
Next fl

Où Récap et Paramètres sont les feuilles où je ne veux pas réaliser mon action.
Or ça ne fonctionne pas, quand je la lance ça ne marche que sur la feuille active.
Quelqu'un a une idée ?

Je sais bien que je pourrais sélectionner toutes les feuilles concernées et faire mon action mais je pourrais avoir besoin de cette macro pour des actions plus spécifiques.
 

castor

XLDnaute Nouveau
Bon j'ai trouvé la réponse : il manque
VB:
fl.Select
avant mon Range...

En revanche, y a-t-il un autre moyen de travailler sur certaines feuilles et pas d'autres sans passer par
Code:
If fl.Name <> "Récap"
?

Si je crée d'autres feuilles dans mon classeur sur lesquelles je ne veux pas faire mon action répétitive, comment faire pour ne pas avoir à modifier ma macro à chaque fois ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Castor,
C'est normal, "Range("B10:B1000").Select" n'adresse que la feuille active. Il faut préciser la feuille sur laquelle s'applique l'action. Testez avec :
VB:
Sub essai()
Dim fl As Worksheet
For Each fl In Worksheets
  If fl.Name <> "Récap" And fl.Name <> "Paramètres" Then
     Sheets(fl.Name).Range("B10:B1000").ClearContents
  End If
Next fl
End Sub
 

castor

XLDnaute Nouveau
Bonjour Castor,
C'est normal, "Range("B10:B1000").Select" n'adresse que la feuille active. Il faut préciser la feuille sur laquelle s'applique l'action. Testez avec :
VB:
Sub essai()
Dim fl As Worksheet
For Each fl In Worksheets
  If fl.Name <> "Récap" And fl.Name <> "Paramètres" Then
     Sheets(fl.Name).Range("B10:B1000").ClearContents
  End If
Next fl
End Sub
On a répondu en même temps :) Et oui le problème était bien la sélection de la feuille
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 244
Membres
103 162
dernier inscrit
fcfg