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 :

incrementation du 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 éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 268
    Par défaut incrementation du nom d'un fichier
    Bonjour
    j'ai le code suivant qui fonctionne tres bien pour une enregistrer sous. Seulement, dans le nom du fichier j'aimerais qu'un indice s'incremente quand un fichier est existant.
    Exemple pour un premier enregistrement
    1254_alignement_ERIC_00.xls
    et si je fais un nouvel enregistrer sous je souhaiterais que le fichier s'enregistre sous le nom suivant
    1254_alignement_ERIC_01.xls

    Comment faire ? merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'ENREGISTRER SOUS
     
        ActiveWorkbook.SaveAs Filename:=chemin & Range("gn1").Value & "_" & "_alignement_" & Range("b13").Value & ".xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,
    avant d'enregistrer tu teste l'existence du fichier avec une commande DIR ... et tant qu'il existe tu incrémente ton indice..

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 268
    Par défaut
    je ne connais pas cette fonction tu peux me donner un exemple en t'appuyant sur mon code stp ?
    merci d'avance

    je precise egalement que l'indice peut monter jusqu'a 10...

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Code non testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Réf. 111101.xlsm fmris
    'ENREGISTRER SOUS
        Dim i As Integer, Fich As String, Res As Integer
        For i = 1 To 100
            Fich = Dir(chemin & Range("gn1").Value & "_" & "_alignement_" & Range("b13").Value & "_" & _
                Format(i, "00") & ".xls")
            If Fich = "" Then
                ActiveWorkbook.SaveAs Filename:=chemin & Fich, FileFormat:= _
                xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
                , CreateBackup:=False
                Exit For
            End If
        Next i

  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
    En adaptant la proposition de bbil, ci-joint une fonction qui permet de donner le premier indice libre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function IndexFich(ByVal Chemin As String, Fichier As String) As Integer
    Dim i As Integer
     
    Do
        i = i + 1
    Loop Until Dir(Chemin & Fichier & i & "*.xls") = ""
    IndexFich = i
    End Function
    Dans ton cas, on l'appelle comme ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
    Dim Rep As String, Fich As String
     
    Rep = "C:\Documents and Settings\Administrateur\Bureau\"    'Ajouter \ en dernier
    With Worksheets("Feuil1")                                   'à adapter
        Fich = .Range("GN1").Value & "_alignement_" & .Range("B13").Value
    End With
     
    Fich = Rep & Fich & IndexFich(Rep, Fich) & ".xls"
    ThisWorkbook.SaveAs Filename:=Fich, FileFormat:=xlNormal
    End Sub

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Une autre méthode en utilisant FSO

    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
    Dim fso As Object
    Dim FsoRepertoire As Object
    Dim FsoFichier As Object
    Dim str() As String
    Dim i As Byte
    Dim StrPrefixeFichier as String
     
    StrPrefixeFichier = "1254_alignement_ERIC_"
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set FsoRepertoire = fso.GetFolder(ThisWorkbook.Path)
     
    'Boucle sur fichiers du repertoire
    For Each FsoFichier In FsoRepertoire.Files
        str = Split(FsoFichier.Name, ".")
            If str(UBound(str)) = "xls" And Left(str(0), Len(StrPrefixeFichier )) = StrPrefixeFichier  Then
            If IsNumeric(Right(str(0), 2)) Then
                If Val(Right(str(0), 2)) > i Then i = Val(Right(str(0), 2))
            End If
        End If
    Next
     
    i = i + 1
     
    ThisWorkbook.SaveAs StrPrefixeFichier  & IIf(Len(i) = 1, "0" & i, i) & ".xls"
    EDIT : Ajout du test du nom de fichier.
    Bien vu Daniel C

Discussions similaires

  1. [XL-2000] Incrementation de nom de fichier lors de l'enregistrement
    Par Lowreal dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/02/2010, 11h18
  2. Comment lire le nom d'un fichier ?
    Par Mister_FX dans le forum ASP
    Réponses: 2
    Dernier message: 13/05/2005, 10h27
  3. [résolution de noms] [réseau] problème fichier hosts
    Par Aldo dans le forum Administration
    Réponses: 2
    Dernier message: 11/04/2005, 21h38
  4. sauvegarder le nom d'un fichier grace a un batch ?
    Par Phenomenium dans le forum Windows
    Réponses: 5
    Dernier message: 02/06/2004, 12h16
  5. Recuperer le nom d'un fichier
    Par elvivo dans le forum C
    Réponses: 5
    Dernier message: 27/12/2002, 15h44

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