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

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.
 

Staple1600

XLDnaute Barbatruc
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 ? :rolleyes::rolleyes:

*: 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:

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas