[Résolu] Save as avec incrémentation nom du fichier

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 !

titiborregan5

XLDnaute Accro
Bonjour à tous,
j'ai pas mal cherché sur le net mais je n'ai pas trouvé ce que je cherchais... à savoir, une gestion de l'enregistrement d'un fichier.
Si pas de fichier déjà existant le nom "test" sinon si test existe "test v1" et si "test v1" existe "test v2" et ainsi de suite.

J'arrive à faire le début jusqu'à test v2 mais après je bloque...
Voici mon code:
Code:
Sub Bouton1_Clic()
chemin = "C:\Users\xxx\Desktop\"
i = 1
nom = "test" & ".xlsm"
fichier = chemin & nom
If Dir(fichier) <> "" Then
nom2 = "test V" & i + 1 & ".xlsm"
ActiveWorkbook.SaveAs (chemin & nom2)
Else: ActiveWorkbook.SaveAs (chemin & nom)
End If
End Sub
je mets aussi le fichier...

Merci d'avance pour votre aide

Tibo
 

Pièces jointes

Dernière édition:
Re : Save as avec incrémentation nom du fichier

Bonjour titiborregan

Essaie (non testé)

Code:
Sub Bouton1_Clic()
chemin = "C:\Users\xxx\Desktop\"
i = 1
nom = "test*" & ".xlsm"
fichier = chemin & nom
While Dir(fichier) <> ""
  nomfic = Dir
Wend
If nomfic = "test.xlsm" Then
  nom2 = "test1.xlsm"
Else
  num = Replace(nomfic, ".xlsm", "")
  num = Replace(num, "test", "")
  nom2 = "test" & num + 1 & ".xlsm"
End If
ActiveWorkbook.SaveAs (chemin & nom2)
End If
End Sub
 
Re : Save as avec incrémentation nom du fichier

Bonjour pierrejean, merci pour ta réponse!!
J'ai une erreur de type 13: imcompatibilité de type...
Avec le débogage il m'affiche la ligne
Code:
nom2 = "test" & num + 1 & ".xlsm"
comme étant en erreur.
Je ne sais pas comment corriger!

Encore merci
 
Re : Save as avec incrémentation nom du fichier

Re

Intercale un msgbox(num) ici:

num = Replace(num, "test", "")
msgbox(num)
nom2 = "test" & num + 1 & ".xlsm"

et vois ce qu'il affiche (il est possible qu'il faille Cint(num) a la place de num
 
Re : Save as avec incrémentation nom du fichier

bonjour titiborregan, pierrejean 🙂

L'ayant fait de mon côté, je joins ma version.
Cordialement.

VB:
Sub Bouton1_Clic()
Dim Nom As String, nFich As String, Chemin As String, n As Integer
Chemin = "C:\Users\xxx\Desktop\"
n = 0
If Dir(Chemin & "test V*.xlsm") = "" And Dir(Chemin & "test.xlsm") = "" Then ActiveWorkbook.SaveAs (Chemin & "test.xlsm"): Exit Sub
nFich = Dir(Chemin & "test V*.xlsm")
Do While nFich <> ""
  n = Application.Max(n, Val(Split(Split(nFich, "V")(1), ".")(0)))
  nFich = Dir
Loop
Nom = "test V" & n + 1 & ".xlsm"
ActiveWorkbook.SaveAs (Chemin & Nom)
End Sub
 

Pièces jointes

Re : Save as avec incrémentation nom du fichier

Re

La version de Softmama devrait fonctionner

Pour ma part , je rectifie:

Sub Bouton1_Clic()
chemin = "C:\Users\xxx\Desktop\"
i = 1
nom = "test*" & ".xlsm"
fichier = chemin & nom
While Dir(fichier) <> ""
nomfic = Dir
Wend
If nomfic = "test.xlsm" Then
nom2 = "test V1.xlsm"
Else
num = Replace(nomfic, ".xlsm", "")
num = Replace(num, "test V", "")
nom2 = "test V" & num + 1 & ".xlsm"
End If
ActiveWorkbook.SaveAs (chemin & nom2)
End If
End Sub
 
Dernière édition:
Re : [Résolu] Save as avec incrémentation nom du fichier

Bonjour,
la macro de Softmama marchait sur mon fichier test qui ne testait que l'enregistrement mais ne fonctionne pas sur mon fichier "réel", l'enregistrement étant la fin d'un userform... J'ai tenté de remplacer en adaptant mais je retombe sur une erreur au moment de l'enregistrement si le fichier a déjà été enregistré 2 fois (nom et nom v1)...
Je vous mets le code, dites-moi si c'est suffisant ou si vous avez besoin du fichier, que j'anonymiserai auquel cas.
Code:
Sub CommandButton1_Click()
Dim Nom As String, nFich As String, Chemin As String, n As Integer
If TextBox1 = "" Then
MsgBox "Merci de renseigner le nom de la personne", vbOKOnly, "Erreur"
Else: Sheets("vierge").Visible = True
Worksheets("Vierge").Copy after:=Worksheets("Vierge")
Nom = TextBox1 & " " & TextBox2
ActiveSheet.Name = Nom
Cells(1, 2).Value = TextBox1
Cells(1, 3).Value = TextBox2
Cells(5, 2).Value = TextBox3
Cells(6, 2).Value = TextBox4
Cells(9, 2).Value = TextBox5
Cells(10, 2).Value = TextBox6
Cells(11, 2).Value = TextBox9
Cells(12, 5).Value = TextBox8
Cells(12, 7).Value = TextBox10
Cells(13, 3).Value = TextBox7
Unload UserForm1
Sheets("vierge").Visible = False
End If
ActiveSheet.Copy
Chemin = "S:\Dossier_Gestion\Gestion Ressources Humaines\Contrats de travail\Contrat\Fiches financières\"
n = 0
fichier = Nom & ".xlsx"
fichier1 = Nom & "V*.xlsx"
If Dir(Chemin & fichier) = "" And Dir(Chemin & fichier1) = "" Then ActiveWorkbook.SaveAs (Chemin & fichier): Exit Sub
nFich = Dir(Chemin & fichier1)
Do While nFich <> ""
  n = Application.Max(n, Val(Split(Split(nFich, "V")(1), ".")(0)))
  nFich = Dir
Loop
Nom2 = Nom & n + 1 & ".xlsx"
ActiveWorkbook.SaveAs (Chemin & Nom2) 'l'erreur vient ici!!!
End Sub
Merci d'avance!
 
Re : [Résolu] Save as avec incrémentation nom du fichier

Re

Cette fois c'est testé
NB: La fonction Dir ne ressort pas les fichiers par ordre alphabétique comme on a coutume de les voir avec Explorer
Par ailleurs avec do while nfich <>"" le dernier nfich est vide
Le chemin est à adapter

Code:
Sub test()
ReDim tablo(0) As String
chemin = "C:\"
nom = "test*.xlsm"
fichier = chemin & nom
nomfic = Dir(fichier)
tablo(UBound(tablo)) = nomfic
ReDim Preserve tablo(UBound(tablo) + 1)
While nomfic <> ""
 nomfic = Dir
 If nomfic <> "" Then
   tablo(UBound(tablo)) = nomfic
   ReDim Preserve tablo(UBound(tablo) + 1)
 End If
Wend
For n = LBound(tablo) To UBound(tablo) - 1
  If tablo(n) = "test.xlsm" Then
    num = 0
  Else
    num = Replace(tablo(n), ".xlsm", "")
    num = CInt(Replace(num, "test V", ""))
  End If
  If num > dernum Then dernum = num
Next
nom2 = "test V" & dernum + 1 & ".xlsm"
ActiveWorkbook.SaveAs (chemin & nom2)
Exit Sub
If nomfic = "test.xlsm" Then
nom2 = "test V1.xlsm"
Else
num = Replace(nomfic, ".xlsm", "")
num = Replace(num, "test V", "")
End If
ActiveWorkbook.SaveAs (chemin & nom2)
End Sub
 
Dernière édition:
Re : [Résolu] Save as avec incrémentation nom du fichier

Merci Pierrejean pour ta réponse.
ce qui change entre mon fichier test et mon fichier réel, c'est que le nom de mon fichier est la concaténation de 2 cellules dans le fichier réel.
Comment dois-je faire dans ce cas là?

PS: je viens de copier colle ton code dans un nouveau fichier et j'ai une erreur d'exécution 13 à la ligne
Code:
num = CInt(Replace(num, "test V", ""))
Normal??


Merci encore!
 
Dernière édition:
Re : [Résolu] Save as avec incrémentation nom du fichier

Vide de nouveau comme la dernière fois!
Petite précision au cas où, le nom du fichier sera la concaténation de A1 et B1 si ça peut aider... désolé d'insister :$
donc ma difficulté en reprenant le code Softmama c'est "juste" le changement de nom du fichier qui passe de "test" (statique donc) à la valeur de 2 cellules...

Encore merci
 
Dernière édition:
Re : [Résolu] Save as avec incrémentation nom du fichier

Oui je sais bien, je ne pensais pas que ce serait compliqué à adapter...
Le nom du fichier sera la concaténation des valeurs de 2 cellules (B1 et C1 normalement). On peut dès le 1er enregistrement mettre V1 si ça peut simplifier ça ne me dérange pas...
 
- 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
3
Affichages
879
Retour