Fonction date

Bonjour,
Je souhaite programmé une macro pour ouvrir automatiquement un document excel, qui est extrait quotidiennement à partir d'un logiciel. le document est toujourd dans le même dossier, le changement au niveau du chemin est juste au niveau du mois et du jour.
Workbooks.Open Filename:= _
G:\JOBS QUOTIDIENS\1 ANNEE *2011*\*avril11*\*06.04*\zbud*06/04/2011*.xlsx

Je voudrais donc remplacé les variable entre * * par la date du jour sous le même format, pour arriver à ouvrir le fichier chaque jour.
Merci

5 réponses

  1. Modérateur
    Salut,
    Je n'ai pas pu tester dans l'état car sous 2003 : 06/04/2011 n'est pas accepté...

    Comme ceci :
    ouvre le fichier correspondant à la date inscrite en A1
    Sub ouvre() 
    Dim chemin As String 
    Dim ChoixDate As Date 
    ChoixDate = CDate(Range("A1").Value) 'A1 à adapter. 
    chemin = "G:\JOBS QUOTIDIENS\1 ANNEE " & Year(ChoixDate) & "\" & Format(ChoixDate, "mmmmyy") & "\" & Format(ChoixDate, "dd.mm") & "\Zbub" & Format(ChoixDate, "dd/mm/yyyy") & ".xlsx" 
    If Dir(chemin) <> "" Then 
        Workbooks.Open Filename:=chemin 
    Else 
        MsgBox "Le fichier n'existe pas." 
    End If 
    End Sub

    test possible :
    Sub tester() 
    Dim test As String 
    Dim ChoixDate As Date 
    ChoixDate = CDate(Range("A1").Value) 
    test = Year(ChoixDate) 
    MsgBox test 
    test = Format(ChoixDate, "mmmmyy") 
    MsgBox test 
    test = Format(ChoixDate, "dd.mm") 
    MsgBox test 
    test = Format(ChoixDate, "dd/mm/yyyy") 
    MsgBox test 
    End Sub

    Franck P
    0
    1. Merci pour votre réponse "pijaku"
      Cela fonctionne correctement.
      Je voudrais savoir par contre si je peux programmer ma macro pour fonctionner que si le fichier n'est pas ouvert, "pour éviter d'exécuter la macro plusieurs fois", Autrement dit si le fichier est déja ouvert msgbox "le fichier est ouvert" si nn executer la Macro.
      Merci
      0
      1. Modérateur
        Suffit d'y ajouter un test :
        Sub ouvre()
        Dim Classeur As Workbook
        Dim chemin As String 
        Dim ChoixDate As Date 
        ChoixDate = CDate(Range("A1").Value) 'A1 à adapter. 
        chemin = "G:\JOBS QUOTIDIENS\1 ANNEE " & Year(ChoixDate) & "\" & Format(ChoixDate, "mmmmyy") & "\" & Format(ChoixDate, "dd.mm") & "\Zbub" & Format(ChoixDate, "dd/mm/yyyy") & ".xlsx" 
        If Dir(chemin) <> "" Then 
            For Each Classeur In Application.Workbooks
                  If Classeur.Path & "\" & Classeur.Name = chemin Then
                      MsgBox "Classeur déjà ouvert"
                      Exit Sub
                  End If
             Next
        Workbooks.Open Filename:=chemin 
        Else 
            MsgBox "Le fichier n'existe pas." 
        End If 
        End Sub
        0
    2. Trop cool,
      Merci beucoup!!!
      0
      1. Tou fonctionne bien,
        Sauf que dans mes macro il y a une recherche v, est je n'arrive pas à lui dire de rechercher dans le fichier qui contient la date du jour, j'ai ecrit le code suivant , mais cela marche que pour aujourd'hui, je voudrais donc le programmé pour prendre la date du jour pour le fichier dont il va effectuer sa recherche v. voici le code que j'ai saisi

        Windows("zrem" & Format(Range("a1"), "ddmmyyyy") & ".xlsx").Activate
        Range("H3").Select
        range("g3").FormulaR1C1 = _
        "=VLOOKUP(RC[-5],'[zrem07042011.xlsx]test zrem'!R3C4:R8000C25,21,FALSE)"
        Range("H3").Select
        Selection.AutoFill Destination:=Range("H3:H2533")
        Range("H3:H2533").Select
        End Sub

        Merci pour votre aide.
        0
        1. Modérateur
          salut,
          je voudrais donc le programmé pour prendre la date du jour pour le fichier dont il va effectuer sa recherche v. ===> j'ai rien compris........
          0
      2. En fait je voulais dire,

        Sur le code suivant, comment remplacer "zbud08042011.xlsx" par zbud('date du jour qui est renseigné dans la cellule a1')
        ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-3],[zbud08042011.xlsx]testzbud!R3C3:R8000C11,9,FALSE)"
        Range("G3").Select
        Selection.AutoFill Destination:=Range("G3:G2533")
        Range("G3:G2533").Select

        Merci.
        0
        1. Modérateur
          Ah! J'aime pas les formules dans VBA!!! et encore moins les VLOOKUP! Essaye ceci :
          Dim NomClas As String
          Dim ChoixDate As Date 
          ChoixDate = CDate(Range("A1").Value)
          NomClas = "[zbud" & ChoixDate & ".xlsx]"
          ActiveCell.FormulaR1C1 = _ 
          "=VLOOKUP(RC[-3], & NomClas & testzbud!R3C3:R8000C11,9,FALSE)" 
          0