Fonction date

Tiestof -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
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
Tiestof
 
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
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
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
Tiestof
 
Trop cool,
Merci beucoup!!!
0
Tiestof
 
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
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tiestof
 
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
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
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