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 : 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
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
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 : 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