Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Rechercher le prochain nom de fichier à utiliser

GeoTrouvePas

XLDnaute Impliqué
Bonjour tout le monde,

Je vais essayer d'être le plus clair possible pour exposer mon soucis.
J'ai un répertoire contenant plusieurs versions d'un fichier. Ces différentes versions sont toutes nommées :
C:\MonDossier\MonFichier V1.xls
C:\MonDossier\MonFichier V2.xls
C:\MonDossier\MonFichier V3.xls
...

J'ai besoin de réaliser une macro qui détermine le nom de la prochaine version. Comme il se peut qu'il y ait des numéros non utilisés, il faut que j'arrive à déterminer le numéro de version utilisé le plus élevé pour ce fichier et que j'y rajoute 1. Je précise que le répertoire peut contenir d'autres fichiers.

Auriez vous une idée sur la façon de réaliser cette fonction ?

Je vous remercie par avance de votre précieuse aide !

Bonne journée
 

mromain

XLDnaute Barbatruc
Re : Rechercher le prochain nom de fichier à utiliser

Bonjour GeoTrouvePas,

Voici un essai ci-dessous :
VB:
Public Function RecupVersionMaxFichier(pathDossier As String, baseNomFichier As String) As Long
Dim myFso As Object, fold As Object, curFile As Object
Dim version As String, maxVersion As Long
    
    Set myFso = CreateObject("Scripting.FileSystemObject")
    Set fold = myFso.GetFolder(pathDossier)
    
    For Each curFile In fold.Files
        If curFile.Name Like baseNomFichier & "*" Then
            version = Replace(Replace(curFile.Name, baseNomFichier, vbNullString), "." & myFso.GetExtensionName(curFile.Name), vbNullString)
            If IsNumeric(version) Then
                If CLng(version) > maxVersion Then maxVersion = CLng(version)
            End If
        End If
    Next curFile
    
    Set curFile = Nothing: Set fold = Nothing: Set myFso = Nothing
    RecupVersionMaxFichier = maxVersion
End Function


Sub test()
Dim nouveauNumDeVersion As Long
    nouveauNumDeVersion = RecupVersionMaxFichier("C:\DossierContenantToutesLesVersions", "MonFichier V")
    nouveauNumDeVersion = nouveauNumDeVersion + 1
    
    MsgBox nouveauNumDeVersion
End Sub

A+
 

GeoTrouvePas

XLDnaute Impliqué
Re : Rechercher le prochain nom de fichier à utiliser

Cela fonctionne impeccablement bien ! Un grand merci à toi.
Il ne me reste plus qu'à gérer la prise en compte de l'extension (je peux parfois avoir des noms communs mais avec des extensions différentes) et tout devrait aller comme sur des roulette !

Je te remercie pour ton aide.

Bonne journée
 

MJ13

XLDnaute Barbatruc
Re : Rechercher le prochain nom de fichier à utiliser

Bonjour à tous

Pour les extensions, c'est assez simple avec ceci (cell étant le nom du fichier):

Code:
For I = Len(cell) To 1 Step -1
If Mid(cell, I, 1) = "." Then GoTo suite
Next
suite:
Ext = Mid(cell, I + 1, Len(cell) - I)
 

GeoTrouvePas

XLDnaute Impliqué
Re : Rechercher le prochain nom de fichier à utiliser

Bonjour Mj et merci pour ta réponse,

Je viens justement de finir de gratter une fonction similaire ^^

Merci quand même pour ton aide et bon week end à tous !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…