Macro: copier le dernier onglet "Mois M" et le renommer "Mois M+1"

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 !

gael_danfa

XLDnaute Nouveau
Bonjour,

Je suis totalement incompétent en matière de création de macro et j'aurai besoin de vos lumières.
J'ai utilisé l'enregistreur de macro pour essayer d'automatiser une tâche sauf que:
1- le début de la tâche consiste à copier l'onglet du mois précédent et le renomer du mois en cours. Ex: Copier l'onglet "05 2015" et le renommer "06 2015"
Le code généré est:
ActiveWindow.WindowState = xlMaximized
Sheets("05 2015").Select
Sheets("05 2015").Copy Before:=Sheets(6)
Sheets("05 2015 (2)").Select
Sheets("05 2015 (2)").Name = "06 2015"

Comment le modifier pour que d'un mois sur l'autre il prenne le dernier onglet "MM 2015" et le renomme "MM+1 2015" ?

2- Ensuite, le travail consiste à jour de formule de "recherchev" sur d'autres classeurs eux aussi nommés du mois en cours.
Ex: dans l'onglet "05 2015", les vlookups se font dans un fichier "Mois_tout_052015" et un fichier "Cumul_tout_052015".
Il faudrait qu'en juin, une fois l'onglet copié et renommé, la recherchev se fasse sur "Mois_tout_062015" et sur "Cumul_tout_062015". Ainsi de suite d'un mois sur l'autre.
Code généré:
Range("I5").Select
Windows.Arrange ArrangeStyle:=xlHorizontal
Range("I5").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-5],'[Mois_Tout_062015.xls]Facturation Periodique'!C1:C10,7,FALSE),0)"
Range("K5").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-7],'[Mois_Tout_062015.xls]Facturation Periodique'!C1:C10,6,FALSE),0)"
Range("I5:K5").Select
Range("I5:K5").Select
Selection.Copy
Range("I6:K171").Select


Quelqu'un peut-il m'aider ? d'avance merci
 

Pièces jointes

Re : Macro: copier le dernier onglet "Mois M" et le renommer "Mois M+1"

Bonjour gael_danfa et bienvenu sur XLD,

Ci-dessous une macro pour la première partie :
VB:
Sub Creation_onglet()
Dim a
a = Split(Sheets(Sheets.Count).Name, " ")
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = IIf(a(0) < 12, Format(a(0) + 1, "00") & " " & a(1), "01 " & a(1) + 1)
End Sub

Pour la seconde, je n'ai pas tout compris, peut-être avec
VB:
Range("I5").Select
Windows.Arrange ArrangeStyle:=xlHorizontal
Dim a
a = Split(Sheets(Sheets.Count).Name, " ")
Range("I5").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-5],'[Mois_Tout_" & a(0) & a(1) & ".xls]Facturation Periodique'!C1:C10,7,FALSE),0)"
Range("K5").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-7],'[Mois_Tout_" & a(0) & a(1) & ".xls]Facturation Periodique'!C1:C10,6,FALSE),0)"
Range("I5:K5").Select
Range("I5:K5").Select
Selection.Copy
Range("I6:K171").Select

Je n'ai pas testé.

A+

Martial

PS : Tu n'es pas obligé de sélectionner les cellules à chaque fois, tu perds du temps, tu pourrais écrire directement :
VB:
Windows.Arrange ArrangeStyle:=xlHorizontal
Dim a
a = Split(Sheets(Sheets.Count).Name, " ")
Range("I5").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-5],'[Mois_Tout_" & a(0) & a(1) & ".xls]Facturation Periodique'!C1:C10,7,FALSE),0)"
Range("K5").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-7],'[Mois_Tout_" & a(0) & a(1) & ".xls]Facturation Periodique'!C1:C10,6,FALSE),0)"
Range("I5:K5").Copy
Range("I6:K171").Select
 
Dernière édition:
Re : Macro: copier le dernier onglet "Mois M" et le renommer "Mois M+1"

Bonjour Martial🙂 Gaël le forum
content aussi de te croiser, hier j'avais fait la macro le matin et j'ai oublié de la poster tu avoueras!!!
Pour Martial🙂
bah non le but c'était bien de créer la feuille et de changer ses liens dans les feuilles, alors j'ai fait par rapport au fichier joint, qui d'ailleurs,ne possèdent pas les mêmes liens que dans la macro faite avec l'enregistreur!!!
C'est Gaël qui nous dira
a+
Bonne journée
Papou🙂
 
Re : Macro: copier le dernier onglet "Mois M" et le renommer "Mois M+1"

Re Martial🙂 Gaël le forum
en relisant ma macro en plus j'ai fait une erreur dans la version V1, voilà qui est corrigé
Mais la formule dans le fichier est:
Code:
=SIERREUR(RECHERCHEV(D5;'V:\FINTECH_Commun\Suivi des factures\Facturation interne\2015\062015\[Mois_Tout_062015.xls]Facturation Periodique'!$A$1:$J$65536;7;FAUX);0)
est-ce bien le chemin de récupération?
a+
Papou🙂
 

Pièces jointes

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