Vba appeler un fichier dont le nom change

momar21 -  
 momar21 -
Bonjour,

je tente de faire une macro qui à partir d'un fichier X ouvre un fichier excel Y, copie des cellules, et reviens les coller dans le fichier excel X. La procédure de base marche, cependant Le nom du fichier X évolue chaque jour (il comporte la date...forme NOM_DATE.XLS) or la macro que j'ai crée (via l'enregistrement de macro) nomme le fichier X de façon "ferme" .

Comment nommer le fichier X pour qu'excel le trouve quand son nom change ?

J'ai testé des Windows("NOM_*.xls").Activate et autre Windows("NOM_????.xls").Activate

mais ca ne marche pas...

Avez vous une solution ?

merci d'avance

4 réponses

  1. dct33 Messages postés 42 Statut Membre 39
     
    Bonjour,

    ceci récupère le nom du classeur actif
    ----------------------------------------------

    Nom_Classeur = ActiveWorkbook.Name

    ceci permet d'appeler le classeur
    -----------------------------------------

    Windows(NomFichier).Activate

    ceci charge un classeur
    -------------------------------

    Workbooks.Open Filename:= chemin

    un exemple qui ressemble à votre besoin

    Sub Ouvre_fichier_reseau()
    '
    Application.ScreenUpdating = False
    On Error GoTo Err
    Nom_Classeur = ActiveWorkbook.Name
    NomFichier = "Toto.xls"
    chemin = "C:\mon_répertoire\" & NomFichier
    Dim lWorkbook As Workbook
    Dim lFound As Boolean
    ' verification si le fichier reseau est déjà ouvert
    lFound = False
    For Each lWorkbook In Workbooks
    If lWorkbook.Name = NomFichier Then
    lFound = True
    Exit For
    End If
    Next

    If lFound = False Then
    If Dir(chemin) <> "" Then

    Workbooks.Open Filename:=chemin

    Else
    MsgBox ("Le fichier " & NomFichier & " n'existe pas ou defaut réseau")
    End If

    Windows(Nom_Classeur).Activate

    End If
    Application.ScreenUpdating = True

    Exit Sub
    Err:
    MsgBox ("Le fichier " & NomFichier & " n'existe pas ou defaut réseau")

    End Sub
    1
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Si c'est la date du jour, avec un format jjmmaaaa :
    Dim mDate As String 
    Dim Fichier As String 
    
         mDate = Replace(Date,"/","") 
         Fichier = "NOM_" & mDate & ".xls"


    Si c'est le date d'hier, avec format jjmmaaaa :
    Dim mDate As String 
    Dim Fichier As String 
    
         mDate = Replace(Date - 1,"/","") 
         Fichier = "NOM_" & mDate & ".xls"


    ;o)
    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    0
  3. momar21
     
    Merci,

    le format exact du fichier est:

    NOM_AAAAMMJJ_HHMM.xls

    Seul la partie NOM du fichier ne change jamais...

    Et je n'ouvre qu'un seul fichier de ce type à la fois...
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Voilà pour le format:
           mDate = Replace(Format(Now, "yyyymmdd hh:mm"), "/", "") 
           mDate = Replace(mDate, " ", "_")
           mDate = replace(mDate,":","")


      ;o)
      0
  4. momar21
     
    merci dct33, j'ai reussi ce que je voulais faire avec ta commande pour nommer le fichier actif et le recuperer plus tard avec son "nouveau" nom !!

    super
    0