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

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

  • Classeur1.xls
    87 KB · Affichages: 57
  • Classeur1.xls
    87 KB · Affichages: 56
  • Classeur1.xls
    87 KB · Affichages: 55

Yaloo

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

Paritec

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

Paritec

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

  • Gaël_Danfa V2.xls
    93 KB · Affichages: 34
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 149
Messages
2 085 772
Membres
102 970
dernier inscrit
JMaurice