VBA enregistrement feuille avec nom variable (mois, année..)

Bonjour tout le monde,

Dans mon fichier j'ai 2 feuilles. La première (feuille SOCIETE) se compose à gauche d'un tableau croisé dynamique et sur la droite un recap des données qui vont se recopiées sur la deuxième feuille (feuille OD).

j'ai fait une macro qui s'active en faisant ctrl+ e, elle enregistre la feuille OD dans mes documents avec un nom variable (suivant le mois, l'année et un numéro de lot). Pour l'année et le mois tout va bien, ce qui me pose problème c'est le numéro de lot, pour faire simple il correspond à un numero automatique attribué à la feuille. Je souhaiterais pour le mois de Juillet par exemple enregistrer 2 feuille OD, la première s'appelera 07 2011 lot 1 et la deuxième 07 2011 lot 2.

Le problème se pose quand je veu enregsitrer le mois suivant, aout par exemple, il devrait m'enregistrer la feuille OD avec le nom 08 2011 lot 1, mais il me met 07 2011 lot 3. Quelqu'un peu me donner un coup de main svp.

Merci Beaucoup

106test-korosifs.xlsm (140.03 Ko)

Bonjour,

Essaie en modifiant la dernière ligne de code ainsi :

Sheets("Ecritures compta").Range("N1") = IIf(Sheets("Ecritures compta").Range("N1") = 1, 2, 1)

Bonne journée

Merci pour ta réponse, mais le soucis c'est qu'avec ta formule je suis obligé d'enregsitrer 2 feuillles à chaque fois pour que la numerotation fonctionne correctement. C'est à dire que si j'enregsitre 1 feuille Juillet elle s'appelera 07 2011 lot 1 et si j'enregistre 1 feuille Aout elle s'appelera 08 2011 lot 2 au lieu de lot 1.

Merci quand même

Re-,

On pourrait jouer avec des noms définis, et ainsi, il ne devrait plus y avoir de soucis, il suffirait juste de supprimer les noms des années trop anciennes...

par exemple, ton code pourrait devenir :

Sub Enregistrer()

''''''''commande Ctrl + e''''''''

Dim mois As String
Dim année As String
Dim BU As String
Dim numero_lot As String
Dim extension As String
Dim Chemin As String
Dim nomfichier As String
Dim Nms As Name
Dim Cpt As Byte
For Each Nms In Names
    y = Right(Application.Substitute(Left(Nms.Name, 8), "_", "/"), 7)
    If y = Range("L1").Value Then Cpt = Cpt + 1
Next Nms
x = "_" & Application.Substitute(Range("L1").Value, "/", "_") & "_" & Cpt + 1
ActiveWorkbook.Names.Add Name:=x, RefersToR1C1:="=" & Cpt + 1
mois = Right(Range("L1"), 2)
année = Range("S1")
BU = Range("E5")
numero_lot = Cpt + 1
extension = ".xlsx"
nomfichier = "Ecritures_CDS_" & BU & "_" & mois & année & "_lot" & numero_lot & extension
Chemin = "C:\Users\Romain\Documents"
Sheets("OD").Copy
ActiveWorkbook.SaveAs Filename:=nomfichier
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub

Bon courage

Merci pour ta macro cousinhub, mais je dois conserver mes archives ! donc quelqu'un pour m'aider svp !

Merci

Re-,

euh, j'ai peur de ne pas comprendre ta dernière phrase...

mais je dois conserver mes archives

Il n'a jamais été question de les supprimer, et mon code ne le fait pas, j'ai juste parlé de supprimer les noms définis dans le classeur....

donc quelqu'un pour m'aider svp

ça fait toujours plaisir....

Avec mon code, tu es sûr de ne pas enregistrer 2 fois le même lot, et tu incrémentes ce lot si tu en as déjà 1 d'enregistré.

si tu n'en as pas, le lot redescend à 1....

Maintenant, à toi de voir

, excuse moi je crois que je ne t'avais pas bien compris ! désolé.

Je viens de le reessayer, j'ai enregistré un premier lot il me l'a nommé 072011 lot 1, je l'ai supprimé pour tester et j'en est réenregistré un qu'il aurait du m'appeler 072011 lot 1 puisque l'autre été supprimé et il l'a appelé lot 2.

Encore désolé, j'avais pas compris, je croyais que ça écrasé l'ancien fichier en le remplaçant par le nouveau.

Merci

Bonjour

Une méthode que j'utilise

Tu n'es pas limité par le nombre de version

Plus besoin de la cellule N1

A voir

Banzai64 ça marche super bien, question complémentaire alors :p

Quand on lance la macro elle enregistre la feuille OD en tant que fichier renommé par ex: 072011 lot 001. Est il possible de lui demander de créer un dossier du nom du mois et qu'il l'enregistre dedans?

Encore merci ça marche du tonerre

Bonjour

Un essai

dans le code deux solutions pour le mois

A toi de choisir

Pouah énorme, j'ai choisi la deuxième option , "yyyy mm". Ca marche super bien, c'est top

Merci beaucoup, et pas la première fois que tu me donnes un sacré coup de main, merci

Rechercher des sujets similaires à "vba enregistrement feuille nom variable mois annee"