IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Incrémenter le nom d'un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 44
    Par défaut Incrémenter le nom d'un fichier
    Bonjour,

    Je suis en train de créer une maccro me permettant de générer un fichier excel contenant un formulaire. J'aimerais qu'a chaque fois qu'un formulaire soit créé à partir du bouton le fichier créé est un nom qui incrémente.

    Le nom sera composé d'une variable contenu dans mon fichier puis d'un chiffre qui incrémentera Ex :

    REFXX00001.xls puis REFZE00002.xls, puis REFEA00003.xls et ainsi de suite

    Pour récupérer la première partie du nom aucun probléme mais je ne sais pas mettre un chiffre qui incrémente ...

    Voici le code que j'ai pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Sub Bouton3_QuandClic()
     
         Dim nom_du_fichier
     
     
    ' Création des variables
     
         nom_du_fichier = Range("B2").Value
         Sheets("Formulaire").Copy
         ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
         ActiveWorkbook.SaveAs Filename:= _
            "z:\mes documents\01 - CDN\05 - Macro\Test\" & nom_du_fichier & ".xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
     
    End Sub
    Je compte sur votre aide Merci!

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Incrémente nom
    Bonsoir Gangstarr,

    Je te préconise cette méthode.

    Compter le nombre de fichiers dans ton répertoire.

    Le nom de ton fichier sera informé de ce nombre + 1.

    Pour compter le nombre de fichiers dans ta ressource, regarde la FAQ

    Nombre de Fichiers

    et adapte.

    Ainsi, ton code créant cette sauvegarde serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.SaveAs Filename:= _
            "z:\mes documents\01 - CDN\05 - Macro\Test\" & nom_du_fichier &  NombreFichiers + 1 & ".xls"
    NombreFichiers étant la valeur renvoyée par le décompte.

    Pour éviter les redondances, tu peux affecter une variable à ton répertoire

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub Bouton3_QuandClic()
    Dim NomFich As String, Chemin As String
    Dim Fichier As String, Suff As String
    Dim i As Integer
     
    Application.ScreenUpdating = False
    NomFich = ThisWorkbook.Sheets("Feuil1").Range("B2").Value 'adapte au nom de ta feuille
    Chemin = "z:\mes documents\01 - CDN\05 - Macro\Test\"
     
    Fichier = Dir(Chemin & "*.xls")
    Do While Fichier <> ""
        If InStr(Fichier, "0") > 0 Then Suff = Suff & "_" & Mid(Replace(Fichier, ".xls", ""), InStr(Fichier, "0"))
        Fichier = Dir()
    Loop
     
    Do
        i = i + 1
        If InStr(Suff, "_" & Format(i, "000000")) = 0 Then Exit Do
    Loop
     
    ThisWorkbook.Sheets("Formulaire").Copy
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveWorkbook.SaveAs Chemin & NomFich & Format(i, "000000")
    ActiveWorkbook.Close
    End Sub
    Bonjour MarcelG,
    Ta proposition risque de donner des effets indésirables si on supprime un fichier du dossier. il risque d'y avoir deux fichiers avec le même n°.

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut renommer fichier
    Bonjour mercatog, gangstarr, et le Forum,

    C'est vrai.

    Ce n'est pas une hypothèse émise par notre ami.

    Une solution serait alors de renommer tous les fichiers, puis de reprendre mon code.

    Au demeurant, ta solution semble plus "professionnelle" (et ce n'est pas nouveau !)

    Bonne journée à tous.

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour MarcelG
    Tu as raison, on ne peut pas prévoir à la place du demandeur. ma remarque était seulement "Au cas où".
    Sinon, ma proposition n'est pas aussi professionnelle et exhaustive.
    Elle fonctionne avec l'une des limites apparentes que les fichiers ne devraient pas comporter des 0 avant le suffixe numérique.
    Si on a un fichier Nommé par exemple Tata0toto000001.xls, le code ne fonctionnera pas correctement comme prévu.

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour tout le monde,
    On peux également stocker de manière invisible un numéro de formulaire dans les noms du classeur.
    Un exemple de code à adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Nm As Name
    Dim NbreFormulaire As Integer
     
    For Each Nm In ThisWorkbook.Names
        'ici le chiffre 4 est dû au nom de 4 lettres : toto
        If Left(Nm.Name, 4) = "toto" Then
            NbreFormulaire = Right(Nm.Name, Len(Nm.Name) - 4) + 1
            Nm.Delete
        End If
    Next
    If NbreFormulaire = 0 Then
        NbreFormulaire = 1
    End If
    ThisWorkbook.Names.Add "toto" & NbreFormulaire, RefersToR1C1:="=Feuil1!R1C1"
    EDIT : on n'a plus qu'à réutiliser la variable NbreFormulaire.
    EDIT2 : code modifié pour ne pas effacer tous les noms du classeur, le cas échéant...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 44
    Par défaut
    Merci beaucoup pour vos réponses. Excusez moi j'ai pas eu le temps de répondre avant.
    Vos solutions m'ont bien aidé.
    MarcelG ta solution était intéressante mais comme il a été dit le fait de compter les fichiers pouvait poser probléme dans mon cas.(en cas de suppresion)
    J'ai utilisé la solution de mercatog en l'adaptant un peu. J'ai donc crée un champ sur ma feuille de départ qui s'incrémente avec une boucle à chaque génération de fichier.

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. copie de fichiers avec incrémentation du nom
    Par bernez dans le forum Windows
    Réponses: 0
    Dernier message: 18/10/2012, 15h12
  2. incrémenter le nom d'un fichier de sortie ?
    Par robbywan dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 24/08/2012, 17h21
  3. [AC-2003] Exporter vers Excel - Incrémenter le nom du fichier Excel
    Par jeanpierre78 dans le forum IHM
    Réponses: 8
    Dernier message: 22/02/2011, 11h52
  4. [AC-2007] Export excel et incrément de nom de fichier
    Par vincent1746 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/06/2010, 11h13
  5. Réponses: 7
    Dernier message: 16/04/2008, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo