Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Répeter une macro sur les feuilles suivantes

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 !

Claudy

XLDnaute Accro
Bonjour,
une feuille , une macro...ça fonctionne bien.🙂
Comment faire exécuter cette macro dans les trois feuilles qui suivent (nommées octobre2020, novembre2020, décembre2020)?
Evidemment d'autres feuilles vont venir s'ajouter par la suite, et même macro pour les mois suivants.
Merci d'avance,
Claudy
 
Solution
Bonjour Claudy, sylvanu,

J'ai l'impression qu'on pourrait faire exécuter le code de la macro
pour toute feuille dont le nom se termine par "20", donc ici :


"septembre20"
"octobre20"
"novembre20"
"décembre20"

Tu as écrit : « même macro pour les mois suivants »

"janvier21"
"février21"
"mars21"
"avril21"

Donc code VBA correspondant :
VB:
Sub Essai()
  Dim N$, i%
  For i = 1 To WorkSheets.Count
    N = Right$(WorkSheets(i).Name, 2)
    If N = "20" Or N = "21" Then
      'travail de la macro
    End If
  Next i
End Sub
soan
Bonjour Claudy,
Deux solutions possibles parmi de multiples :

1- Vous connaissez les N° de feuilles de début et fin, dans ce cas :
VB:
Sub Essai()
NoMin = 3: NoMax = 7
For NoFeuil = NoMin To NoMax
    Ecrit (NoFeuil)   ' lance la macro sur la feuille N° NoFeuil.
Next NoFeuil
End Sub
Sub Ecrit(N)
    Sheets("Feuil" & N).Range("A1") = Sheets("Feuil" & N).Range("A1") + 1
End Sub

2- Vous n'avez pas trop de feuilles à exclure, et alors :
Code:
Sub Essai2()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name <> "Header" And Sh.Name <> "Ne pas toucher" Then  ' Elimine les feuilles non concernées
        Ecrit2 (Sh.Name)
    End If
Next Sh
End Sub
Sub Ecrit2(NomFeuille)
    Sheets(NomFeuille).Range("A1") = Sheets(NomFeuille).Range("A1") + 1
End Sub

Le plus simple est l'ex 2, il est auto adaptatif et n'est pas à reprendre si une rajoute une feuille.
 

Pièces jointes

Bonjour Claudy, sylvanu,

J'ai l'impression qu'on pourrait faire exécuter le code de la macro
pour toute feuille dont le nom se termine par "20", donc ici :


"septembre20"
"octobre20"
"novembre20"
"décembre20"

Tu as écrit : « même macro pour les mois suivants »

"janvier21"
"février21"
"mars21"
"avril21"

Donc code VBA correspondant :
VB:
Sub Essai()
  Dim N$, i%
  For i = 1 To WorkSheets.Count
    N = Right$(WorkSheets(i).Name, 2)
    If N = "20" Or N = "21" Then
      'travail de la macro
    End If
  Next i
End Sub
soan
 
Soan, Sylvanu,
Merci à vous deux,mais après avoir essayer/creuser vos idées,
j'ai trouvé ceci:
VB:
Sub previsions_trois_mois()
Dim Sh As Worksheet, x As Double

x = ActiveSheet.Index
For i = 0 To 3
Worksheets(x + i).Select
previsions'ma macro
Next i
Worksheets(x).Activate
End Sub

Merci,
Claudy
 
Bonjour Claudy, sylvanu,

À propos du code VBA de ton post #4 :

1) dans Worksheets(x + i).Select et Worksheets(x).Activate
tu utilises x en tant qu'index de feuille (soit en complément
avec i, soit tout seul) ; alors pourquoi donc as-tu mis le type
Double pour cette variable x ? Double est pour les nombres
fractionnaires en double précision (donc avec des décimales) ;
pour un index de feuille, mets un type Entier : Byte suffit si
nombre de feuilles maxi <= 255 ; sinon : Dim x% (c'est la
même chose que Dim x As Integer).


2) le nom de ta sub est "previsions_trois_mois" ; alors pour
ta boucle For i : a) ce serait plutôt 0 To 2 : à partir de 0 ➯
3 itérations, au lieu de 4 avec 0 To 3 ; par contre : b) laisse
comme c'est si c'est : 0 pour le réel en cours + 3 prévisions.

Lis aussi la remarque du post #5 de sylvanu.

soan
 
- 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

Réponses
7
Affichages
316
Réponses
5
Affichages
543
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…