[VBA] Ouvrir un fichier avec un nom variable

Mimix

XLDnaute Nouveau
Bonjour,


Je fais régulièrement des extractions de données et j'enregistre le fichier sous le format:
"Nom du fichier" & mois & " v " & date d'enregistrement.
Je me retrouve ainsi avec plusieurs fichiers de versions différentes dans un même dossier.

Afin de garder les mêmes onglets pour chacune de mes versions, j'ouvre un ancien fichier de mon dossier, je supprime les anciennes données pour mettre les nouvelles et je sauvegarde sous un autre nom.

J'ai testé le code suivant:
Code:
Sub test()
M= InputBox("Mois en cours?")
Chemin = "C:\Test conso\" & M 'chemin de mon dossier 
Fichier = Chemin & "\" & "CL" & M & " v" 'format d'un fichier
Workbooks.Open Dir(Fichier & "*") ' ouverture d'un fichier dont le nom est plus ou moins proche
End Sub

Mon objectif, est d'ouvrir un fichier quelconque pour actualiser mes données et enregistrer une nouvelle version.

Lorsque j'exécute la macro, j'ai une erreur d'exécution 1004 avec le nom d'un de mes fichiers et on me dit que le fichier est introuvable et de vérifier le nom et l'emplacement.

Merci par avance pour votre aide
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Ouvrir un fichier avec un nom variable

Bonjour à tous

Que renvoie cette macro dans la fenêtre Exécution de VBE chez toi?
A quoi correspond v?
Essaie en ajoutant ceci
Fichier = Chemin & "\CL" & M & ".xls"
Code:
Sub test()
Dim M$, Chemin$, Fichier$
'M = InputBox("Mois en cours?")
M = "Décembre"
Chemin = "C:\Test conso\" & M 'chemin de mon dossier
Fichier = Chemin & "\" & "CL" & M & " v" 'format d'un fichier
Debug.Print Fichier
Debug.Print Dir(Fichier & "*")
'Workbooks.Open Dir(Fichier & "*") ' ouverture d'un fichier dont le nom est plus ou moins proche
End Sub
 
Dernière édition:

Mimix

XLDnaute Nouveau
Re : [VBA] Ouvrir un fichier avec un nom variable

Bonjour Staple1600,

Le v est l'abréviation de version: un fichier se présente par exemple sur le format: " CL 11 v19.12.2010".

Lorsque j'exécute le code, j'ai le message suivant:
Erreur d'exécution '1004':'CL 11 v12.12.2010.xlsx' est introuvable. Vérifiez l'orthographe du nom du classeur et la validité de l'emplacement.

Si vous essayez d'ouvrir le fichier à partir de la liste des fichiers les plus récents, assurez-vous que le fichier n'a pas été renommé, déplacé ou supprimé.
 

kjin

XLDnaute Barbatruc
Re : [VBA] Ouvrir un fichier avec un nom variable

Bonjour,
Code:
Sub test()
Dim fs As Object, oFiles As Object, f As Object, Mois$, pFld$
Set fs = CreateObject("Scripting.FileSystemObject")
Mois = InputBox("Mois en cours?")
pFld = "C:\Test conso\" & Mois 'chemin de mon dossier
If fs.FolderExists(pFld) Then
Set oFiles = fs.GetFolder(pFld).Files
    For Each f In oFiles
        If f.Name Like "CL" & Mois & " v*" Then
            Workbooks.Open f
            Exit For
        End If
    Next
End If
Set fs = Nothing
Set oFiles = Nothing
End Sub
Attention : sensible à la casse...!
A+
kjin
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : [VBA] Ouvrir un fichier avec un nom variable

Re,
Code:
Sub test()
Dim Mois$, pFld$, f$
Mois = InputBox("Mois en cours?")
pFld = "C:\Test conso\" & Mois & "\"
f = Dir(pFld)
Do Until f = ""
    If f Like "CL" & Mois & " v*" Then
        Workbooks.Open pFld & f
        Exit Sub
    End If
    f = Dir()
Loop
End Sub
Attention : sensible à la casse...itou!
A+
kjin
 
Dernière édition:

Mimix

XLDnaute Nouveau
Re : [VBA] Ouvrir un fichier avec un nom variable

Bonjour kjin,

Merci pour ton aide. Tes codes marchent parfaitement dans une procédure indépendante.
Mon problème est que je veux les inclure dans une procédure et que du coup, elle s'arrête une fois le fichier souhaité ouvert.
De même, j'ai aussi un problème pour l'enregistrement: je ne sais pas trop comment faire pour appeler l'ancien fichier ouvert où j'ai actualisé mes données et l'enregistrer sous un nouveau nom.

Voici ma procédure complète:
Code:
Sub Appel()
Dim FL1 As Worksheet, Chemin As String
Dim Mois$, pFld$, f$

    Application.ScreenUpdating = False
        Mois = InputBox("Mois en cours?")
        Chemin = "C:\Test conso\" & Mois
        
    ' Ouverture d'un fichier d'une version précédente
        pFld = "C:\Test conso\" & Mois & "\"
        f = Dir(pFld)
        Do Until f = ""
            If f Like "GL Groupe " & Mois_prec & " v*" Then
            Workbooks.Open pFld & f
        Exit Sub
            End If
        f = Dir()
    Loop

    ' Suppression des données de l'ancienne base
    Range(Cells(2, 1), Cells(2, 24).End(xlDown)).Delete
    Set FL1 = ActiveWorkbook.Worksheets("base")
    
    'Exécution d'une autre procédure (mise en forme)
    Ouvrir Chemin, FL1
    Application.ScreenUpdating = True
    
    'Enregistrement de la nouvelle version du fichier
    MaDate = Format(Date, "dd.mm.yyyy")
    Workbooks("CL" & Mois & " v*.xlsx"). _
    SaveAs Filename:=Chemin & "\" & " CL" & Mois & "  2010 v " & MaDate & ".xlsx" ' ne marche pas
        
End Sub
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : [VBA] Ouvrir un fichier avec un nom variable

Bonjour,
Mon problème est que je veux les inclure dans une procédure et que du coup, elle s'arrête une fois le fichier souhaité ouvert.
Oui, c'est normal du à la présence de "Exit Sub"
je ne sais pas trop comment faire pour appeler l'ancien fichier ouvert où j'ai actualisé mes données et l'enregistrer sous un nouveau nom.
Désolé, mais entre le nouvel ancien fichier ouvert et le xlsx qui devient xls,
je ne comprends pas !
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 327
Membres
102 862
dernier inscrit
Emma35400