Lancer une macro sur toutes les feuilles ayant une plage nommée

  • Initiateur de la discussion Initiateur de la discussion neal
  • 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 !

neal

XLDnaute Junior
Bonjour,
dans un classeur excel, j'ai 5 onglets.
Sur 3 de ces onglets j'ai nommé une plage "MAZONE".
Sur chacune de ces plages, j'ai la même macro (MAMACRO) qui tourne, quelque soit l'onglet.
Je voudrais créer une macro, rattachée à un bouton unique, qui aille faire tourner MAMACRO sur tous les onglets contenant la plage nommée "MAZONE", quelque soit le nombre d'onglet.
Je n'arrive pas à le lui faire faire, je suis aujourd'hui obligé d'aller dans chaque onglet pour la lancer parce que je sais dans quels onglets sont les plages nommées.
Comment faire ?
Merci d'avance.
 
Re : Lancer une macro sur toutes les feuilles ayant une plage nommée

Bonsoir à tous


neal
Tu es inscrit sur le forum depuis 2011*...🙂
Donc tu sais ce qui manque dans ton premier message, non ? 🙄🙄

*: ce qui veut dire que tu connais les us et coutumes du forum et que tu as lu la charte, non ?


EDITION: Bonsoir job75 😉

(J'oubliais que chez toi, sans ou avec PJ, ce qui compte c'est la beauté du VBA 😉)

Mais du coup mon message tombe un peu à l’eau 😉
 
Dernière édition:
Re : Lancer une macro sur toutes les feuilles ayant une plage nommée

Bonjour neal, hello Jean-Marie,

Forcément les noms "MAZONE" sont définis dans les feuilles, pas dans le classeur.

1ère solution, qui active les feuilles, je ne la recommande donc pas :

Code:
Sub Recherche()
Dim w As Worksheet
For Each w In Worksheets
  On Error Resume Next
  If IsError(w.Names("MAZONE")) Then GoTo 1
  On Error GoTo 0
  w.Activate
  MAMACRO
1 Next
End Sub

Sub MAMACRO()
MsgBox ActiveSheet.Names("MAZONE").RefersTo 'pour tester
'---suite du code
End Sub
2ème solution avec la macro MAMACRO paramétrée, c'est mieux :

Code:
Sub Recherche()
Dim w As Worksheet
For Each w In Worksheets
  On Error Resume Next
  If IsError(w.Names("MAZONE")) Then GoTo 1
  On Error GoTo 0
  MAMACRO w
1 Next
End Sub

Sub MAMACRO(w As Worksheet)
MsgBox w.Names("MAZONE").RefersTo 'pour tester
'---suite du code
End Sub
A+
 
Re : Lancer une macro sur toutes les feuilles ayant une plage nommée

Re,

Bien sûr, si vous n'utilisez la macro que de cette manière, vous pouvez tout y mettre :

Code:
Sub MAMACRO()
Dim w As Worksheet
For Each w In Worksheets
  On Error Resume Next
  If IsError(w.Names("MAZONE")) Then GoTo 1
  On Error GoTo 0
  MsgBox w.Names("MAZONE").RefersTo 'pour tester
  '---suite du code
1 Next
End Sub
A+
 
Dernière édition:
- 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