Ajouter (1) si fichier existe deja

Bonjour à tous,

J'ai créé un fichier qui peut s'enregistre via un macro lancée par un CommandButton. Le problème étant que je peux avoir plusieurs fichier qui portent le même nom. J'aimerais donc que si le nom du fichier existe, vba nomme mon fichier Nomdufichier(x), comme quand on télécharge plusieurs fois le meme fichier via chrome (je ne sais pas si vous voyez ce que je veux dire ^^).

Je bloque sur comment généré le (x) si le fichier existe deja :/

Si quelqu'un peut m'aider ce serait magique

Merci par avance

Bonjour Leeya

Alors déjà pas de fichier... bon mais alors pas de code....

Merci de nous fournir au moins le code que tu utilises STP

@+

Bonjour,

Tu peux sans doute généré un nom de fichier qui sera unique en utilisant la date et l'heure du PC.

Par exemple :

Sub Macro1()

Dim D As String
Dim H As String
Dim nomfichier As String

D = "D-" & Day(Date) & "-" & Month(Date) & "-" & Year(Date)
' D Affichera la Date : D-15-05-2020
H = " H-" & Hour(Time) & "-" & Minute(Time) & "-" & Second(Time)
' H Affichere l'heure : H-14-26-30

nomfichier = "monintitulé " & D & H
' tu composes ensuite le nom de fichier perso en ajouant D et H NE PAS OUBLIER L'extention du fichier ? enregistrer & ".xls"

'Ainsi aucun fichier ne peut avoir le même nom car il ne seront pas enregistrés ? la même date et à la même seconde.

End Sub

Tu as du coup en plus l'info pour la date et l'heure d'enregistrement du fichier.

Bonjour à tous,

Effectivement desolé j'ai oublié de mettre le code pour l'enregistrement de mon fichier :

Private Sub CommandButton2_Click()

Enseigne = ComboBox1.Value
Element = ComboBox2.Value

 ActiveSheet.SaveAs Filename:="G:\Mon Drive\PLAN A LA REF\PLAN PRE-CREER\Chat\" & Enseigne & "\" & Element & " " & "elements" & ".xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

J'aimerais éviter de mettre la date et l'heure du fichier car ça manquerait de visibilité dans le dossier

Re,

Plusieurs questions par rapport à ton code

1) Est-il nécessaire d'enregistrer avec les macros ?

2) Comme le propose Xmenpl, la date et l'heure en fin de fichier ne poserait pas de soucis je trouve

Veux-tu vraiment une incrémentation ?

@+

Oui il est nécessaire de l'enregistrer via les macros car il me faut quelque chose de standardisé.

Si vraiment il n'y à pas d'autre solution oui j'utiliserais la méthode date et heure mais j'aimerais beaucoup éviter car rendrais le dossier moins clair donc dans l’idéale une incrémentation serait génial

Re,

Non, ce n'est pas une obligation

Voici le code à tester

Private Sub CommandButton2_Click()
  Dim Enseigne As String, Element As String
  Dim sNomFic As String, sPath As String
  Dim Ind As Integer
  '
  ' Définir les variables
  sPath = "G:\Mon Drive\PLAN A LA REF\PLAN PRE-CREER\Chat\"
  ' Récupérer l'enseigne
  Enseigne = ComboBox1.Value
  ' Ajouter l'enseigne au chemin
  sPath = sPath & Enseigne & " \ "
  ' Récupérer l'élément
  Element = ComboBox2.Value
  ' Définir le nom du fichier
  sNomFic = Element & "elements" & ".xlsm"
  ' Tant que le fichier existe
  Do While Dir(sPath & sNomFic) <> ""
    Ind = Ind + 1
    sNomFic = Element & "elements_" & Ind & ".xlsm"
  Loop
 ' Ok on l'enregistre
 ActiveSheet.SaveAs Filename:=sPath & sNomFic, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

@+

Oui il est nécessaire de l'enregistrer via les macros car il me faut quelque chose de standardisé.

Si vraiment il n'y à pas d'autre solution oui j'utiliserais la méthode date et heure mais j'aimerais beaucoup éviter car rendrais le dossier moins clair donc dans l’idéale une incrémentation serait génial

Re,

Comme tu ne partages pas de fichier difficile de trouver d'autres solutions.

Tu pourrais utiliser une troisième combobox qui alimente une cellule excel avec le dernier numéro utilisé.

(Après chaque utilisation du bouton tu ajouterai +1 à la cellule et la combobox irait cherche de nouveau le contenu de

la cellule pour actualiser le numéro.

Merci beaucoup pour ton retour.

Malheureusement j'ai un message d'erreur joint :/

capture

Oui il est nécessaire de l'enregistrer via les macros car il me faut quelque chose de standardisé.

Si vraiment il n'y à pas d'autre solution oui j'utiliserais la méthode date et heure mais j'aimerais beaucoup éviter car rendrais le dossier moins clair donc dans l’idéale une incrémentation serait génial

Re,

Comme tu ne partages pas de fichier difficile de trouver d'autres solutions.

Tu pourrais utiliser une troisième combobox qui alimente une cellule excel avec le dernier numéro utilisé.

(Après chaque utilisation du bouton tu ajouterai +1 à la cellule et la combobox irait cherche de nouveau le contenu de

la cellule pour actualiser le numéro.

En gros mon fichier est un générateur de shapes dans lesquelles je met des photos en fond. Donc je ne peux pas faire appel à une cellule . Mais dans un autre cas l'idée aurait été top

Merci beaucoup pour ton retour.

Malheureusement j'ai un message d'erreur joint :/

oops c'est le path à modifier manque le sous répertoire enseigne

 sPath = "G:\Mon Drive\PLAN A LA REF\PLAN PRE-CREER\Chat\" & Enseigne & "\"

Hello, voilà ma proposition si ça peux t'aider

Private Sub CommandButton1_Click()

Enseigne = ComboBox1.Value
Element = ComboBox2.Value
Nom_du_fichier = "G:\Mon Drive\PLAN A LA REF\PLAN PRE-CREER\Chat\" & Enseigne & "\" & Element & " " & "elements"
x = 1

'test si le fichier existe 
    If Dir(Nom_du_fichier & ".xlsm") <> "" Then 

's'il existe boucle pour trouver le prochain (x) qui n'existe pas       
        While Dir(Nom_du_fichier & "(" & x & ")" & ".xlsm") <> ""
            x = x + 1
        Wend

 'Enregister avec le bon(x)       
        ActiveSheet.SaveAs Filename:=Nom_du_fichier & "(" & x & ")" & ".xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    Else
 'Enregistement normal si le fichier n'existe pas déjà 
        ActiveSheet.SaveAs Filename:=Nom_du_fichier, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    End If
End Sub

ah c'est toi qui génères les diaporamas de chats trop miiiiiiiignons qu'on voit partout?

Je me demandais d'où ils venaient ....

Enchanté !

Hello, voilà ma proposition si ça peux t'aider

Private Sub CommandButton1_Click()

Enseigne = ComboBox1.Value
Element = ComboBox2.Value
Nom_du_fichier = "G:\Mon Drive\PLAN A LA REF\PLAN PRE-CREER\Chat\" & Enseigne & "\" & Element & " " & "elements"
x = 1

    If Dir(Nom_du_fichier & ".xlsm") <> "" Then
        While Dir(Nom_du_fichier & "(" & x & ")" & ".xlsm") <> ""
            x = x + 1
        Wend
        ActiveSheet.SaveAs Filename:=Nom_du_fichier & "(" & x & ")" & ".xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    Else
        ActiveSheet.SaveAs Filename:=Nom_du_fichier, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    End If
End Sub

Wahou !!! Ca marche parfaitement !!!

Merci beaucoup

ah c'est toi qui génères les diaporamas de chats trop miiiiiiiignons qu'on voit partout?

Je me demandais d'où ils venaient ....

Enchanté !

Non ce n'est pas moi mais ça pourrait

J'ai édité mon poste avec des explications pour que tu puisses comprendre comment ça marche

Salut le fil.....

Je vire me suis trompé.... oupssss

J'ai édité mon poste avec des explications pour que tu puisses comprendre comment ça marche

C'est gentil merci beaucoup, justement j'était en train de faire la transcription pour comprendre

Rechercher des sujets similaires à "ajouter fichier existe deja"