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

  • Initiateur de la discussion Initiateur de la discussion castor
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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 ?
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour