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 :
Fonction de vérification de fichier plus récent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Lancement de la macro :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager