Aide script multi-fonction
Bonjour tout le monde,
Je vous explique dans un premier le projet global, pour que vous vous rendiez compte de ce que ca implique.
J'ai créer des tableaux croisés dynamiques qui vont chercher leur donnée dans deux fichiers qui changent de nom régulièrement. Un de ces deux fichiers nécessite l'éxecution d'une macro créer dans un fichier excel qui uniquement comme fonctionnalité la macro.
Ce que je veux que fasse le script :
1 -Qu'il me donne le choix de la base de donnée sur laquelle travailler (2 bases). Pour cette partie, j'avais pensé a faire des MsgBox imbriqué l'une dans l'autre.
2 -En fonction de la base de donnée choisit, vérifier (les bases se situent dans un répertoire du répertoire parent du script) si une base plus récente existe (la base du nom du fichier est toujours le meme).
3 -Si une nouvelle base existe, demander si on l'utilise ou pas.
4 -Si on l'utilise, on copie la nouvelle base dans un dossier nommé "..\sources" sous un nom simplifier,on exécute le fichier macro, et on lance le tableaux croisé dynamique correspondant.
5 -Si on ne utilise pas la nouvelle base, on execute directement le tableaux criosé dynamique correspondant.
Voilà en gros ce que je veux faire ! Les différentes fonctions que j'ai donc créer en récupérant du code a droite a gauche (je ne maitrise pas bien ce language) :
Fonction copie de fichier :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Function CopyFile(Path As String)
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim dossier
Set dossier = objFSO.GetFolder(Path)
If objFSO.FileExists(dossier,fileUse) Then
objFSO.CopyFile (dossier,FileUse) , "..\sources\"
Else
Msgbox "Fichier CMDB introuvable", vbExclamation
End If
Set objFSO = Nothing
End Function |
Fonction de vérification de fichier plus récent:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Function FindLastFile(Path As String)
Dim fName As String
Dim fDate As Date
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder
Set folder = fso.GetFolder(Path)
Dim Files
Set Files = folder.Files
Dim File
For Each File In Files
If File.DateCreated > fDate Then
fDate = File.DateCreated
fName = File.Name
End If
Debug.Print File.Name, File.DateCreated, "=>", fName, fDate
Next
Set Files = Nothing
Set folder = Nothing
Set fso = Nothing
FindLastFile = fName
End Function |
Lancement de la macro :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Function MacroExec()
Dim objXLApp
Set objXLApp = CreateObject("Excel.Application")
objXLApp.Workbooks.Open "./macro.inv.xlsm"
objXLApp.visible = true
objXLApp.DisplayAlerts = False
objXLApp.Run "macro.inv.xlsm!EXEC"
objXLApp.DisplayAlerts = False
objXLApp.Quit
End Function[/quote]
Comparaison des fichiers plus récent :
[quote]Function compare_file(Path As String)
Dim objFSOO
Set objFSOO = CreateObject("Scripting.FileSystemObject")
Dim dirComp
Set dirComp = objFSOO.GetFolder(Path)
Dim courant_dir
courant_dir = WScript.ScriptFullName
courant_dir=left(courant_dir,InStrRev(courant_dir,"\"))
If FileDateTime(dirComp) > FileDateTime(current_dir,"*.*") then
answer = MsgBox ("Un fichier plus recent est disponible, voulez-vous l'utilisez?",vbYesNo,"Nouveau Fichier")
If answer = 6 Then
Else
MsgBox "Vous avez choisit de ne pas utiliser la derniere version du fichier"
Else
MsgBox "Aucun nouveau fichier disponible!"
End Function |
Voilà, j'ai fait plusieurs fonctions, sans être vraiment sûr que celles-ci fonctionnent et je ne sais pas comment imbriquer tout ça :(
Merci d'avance