Incrémenter un nom de fichier ?

Bonjour a tous,

Mon souhait d'aujourd'hui est de créer une sauvegarde de mon fichier actif et de l'enregistrer sur un autre DD ("I:\Copies de sauvegarde Fichiers\"),

afin de continuer a travailler dessus.

J'ai fait plusieurs tentatives:

une m'a permit d'obtenir une copie avec l'incrément derrière l'extension ( MonFichier.xlsm01).

ce que je veux, c'est: MonFichier-V01.xlsm , l'incrément avant le point.

Et que V01 s'incrémente a chaque enregistrement.

Merci par avance a ceux qui pourraient m'aider.

Mon fichier :

Bonsoir,

Après plusieurs heures de bidouillage, j'ai fait la macro en module 4.

Mais je n'arrive toujours pas à l'incrémenter correctement.

Une bonne âme se dévouerait-elle pour m'éviter la migraine ?

Merci à tous.

Bonjour,

J'ai pas trop le temps de relire ta prose mais si ça t'intéresse je te donne ce que j'utilise le plus fréquemment.

Dans le classeur joint il y a 3 macros

ZkVer()

ZkSafe()

et la 3ème

CreateSOSMacro()

qui installe les 2 précédentes dans le ThisWorkbook (Workbook_Open et Workbook_BeforeSave

Les 3 macros sont dans mon Perso.xlam et la dernière dans mon ruban comme ça dès que je prend un classeur j'ai juste un clic à faire pour installer

ZkSafe qui fait une copie de sécurité tous les matins quand j'ouvre le classeur pour la première fois.

et ZkVer qui fait une copie versionnée à chaque sauvegarde et à chaque ouverture successive du classeur...

Inutile de te dire qu'avec ça tu as intérêt à faire une macro qui fait le ménage périodiquement pour virer ce qui ne te sert plus... (surtout si tu as des classeurs de travail qui font plusieurs Mo !)

Nota : Chez moi le dossier de sauvegarde s'appelle D:/SOS !

A+

7routines.xlsm (15.39 Ko)

Merci galopin01,

J'ai suivi ton explication, mais ça ne fonctionne pas...!

Si j'ai bien compris:

"Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)" et "Private Sub Workbook_Open()" étaient déjà dans le "ThisWorkbok" de mon "PERSONAL;XLSB".

J'ai changé la destination ("D:\SOS\") par ("I:\SOS\") qui est mon DD de sauvegarde dans lequel j'ai créé le Dossier SOS.

J'ai mis "Sub CreateSOSMacro" dans le "ThisWorkbook" de mon "PERSONAL;XLSB", Puis dans mon ruban.

Et enfin, "ZkVer" et "ZkSafe" dans un module de mon "PERSONAL;XLSB".

Est-ce c'est bien ça ?

Merci encore...

Non ! je ne sais pas s'il y avait déjà quelque chose dans le ThisWorkbook de ton Personal.xlsb mais à priori il n'y a rien à y mettre.

Mettre juste les 3 macros qui sont dans mon fichier dans Module1 ou...

Quand tu vas vouloir travailler sur "TonFichierPréféré" tu lanceras "Sub CreateSOSMacro" à partir de ton ruban et de "TonFichierPréféré" la macro installera 3 ou 4 lignes dans le ThisWorkbook de "TonFichierPréféré" et ensuite à chaque fois que tu le lanceras ou que tu feras des sauvegardes des copies versionnées viendront s'incrire dans ton I: (en utilisant "ZkVer" et "ZkSafe" de ton Personal.xlsb)

Seul point sensible si "TonFichierPréféré" possède déjà un Workbook_Open ou BeforeSave il faut bricoler un peu pour "concaténer" les Workboo_Open et/ou BeforeSave , car un classeur ne peut comporter 2 macros de même nom.

Dans ce cas il suffit de rajouter les lignes Run zkSafe ou/er Run zkVer dans ces macros "avec tes doigts !"

Le "On Error Resume Next" est destiné à éviter de provoquer une erreur si par hasard tu exportes ton fichier sur un autre ordinateur, bien sur il ne trouvera pas les macros ni ton i:SOS et ainsi il n'y aura pas d'erreur macro.

A+

Bonjour Atlonia, Galopin

J'ai fait ce petit truc qui répond a ta demande

Le dossier atlonia est a mettre a la racine de C: autrement il faudra changer les chemins dans la macro

Bonne réception

5atlonia.zip (22.93 Ko)

galopin01,

J'ai bien suivi ce que tu m'a dit, mais toujours rien dans mon "I`SOS"...!

J'ai trouvé une erreur dans le "Sub CreateSOSMacro()": la ligne 2 est incrémentée de 5, et tout ce qui suit s'en trouvait décalé.

ça me provoquait une erreur.

Mais ce qui m'étonne le plus, c'est que lorsque je passe les sub "ZKVer" et "ZKSave" en pas a pas, ça saute directement de "If" a "EndIf"

sans prendre en compte les lignes intermédiaires......!

A tu une explication la dessus

Bonjour fg2b,

Merci pour ta contribution, mais ça ne fonctionne pas non plus, j'ai une erreur sur la ligne "Open "I:\atlonia\numfile" For Input As #1".

Bien entendu, j'ai créé le chemin dans mon DD "I".

Merci encore.

Je cherche toujours a essayer de faire fonctionner vos 2 solutions.

Merci a tout les deux

Désolé renumérote les lignes dans ton xlsb :

Sub CreateSOSMacro()
Dim x As Integer
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
x = .countOfLines
.insertLines x + 1, "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)"
.insertLines x + 2, "On Error Resume Next"
.insertLines x + 3, "Run ""ZkVer"""
.insertLines x + 4, "End Sub"
.insertLines x + 5, "Private Sub Workbook_Open()"
.insertLines x + 6, "On Error Resume Next"
.insertLines x + 7, "Run ""ZkSafe"""
.insertLines x + 8, "Run ""ZkVer"""
.insertLines x + 9, "End Sub"
End With
End Sub

A+

Et si ça ne rentre pas dans la boucle if c'est que tu as merdé dans ton Path...

Simplifie mets "I:\SOS" comme ça tu peux pas te piéger tout seul...

Et rajoute un fichier (n'importe lequel) dans ton dossier de sauvegarde : Il faut que le prog trouve quelque chose dedans. sinon il croie s'être trompé de chemin...

Je sais c'est un peu capillo-tracté mais c'est à usage interne alors je ne me suis pas cassé la tête à fignoler... et puis normalement dans ce dossier il y a plutôt 500 fichiers que zéro...

A+

OK galopin01, j'avais déjà fait la rectification des incrémantations, pour supprimer le message d'erreur.

je vais tester la modif du chemin ce soir...

merci pour ta patience.

Bonjour,

Si tu as copié mon code dans ta macro, il faut que tu vires le "option explicit" au dessus de ta macro Savefile() , ca pourrait t'éviter ce problème.

Cdlt

Bonjour galopin01 et fg2b,

Houf...!

galopin: C'est fait, Après des heures de pas a pas, de la gamberge et de testes, j'ai enfin réussi à adapter ta solution à mon problème.

J'ai tout remanié et j'ai viré la procédure "Sub CreateSOSMacro()", et j'ai déclaré les variables manquantes pour "Option Explicite.

Et maintenant ça fonctionne à merveille.

Vois les modifs en Feuil1 du classeur.

En Feuil2, tu trouveras les 2 procédures restantes épurées des commentaires.

Merci encore pour ton aide

fg2b: Je viens juste de voir ton dernier post, et je vais le faire au plus vite, je reviens te dire ce qu'il en est. Merci pour ton intérêt....

4routines.xlsm (31.93 Ko)
Rechercher des sujets similaires à "incrementer nom fichier"