Temporisation macro

st007

XLDnaute Barbatruc
Bonjour,

Après quelques jours d'essais, je me résous a faire appel à un ami ....
J'essaye d'automatiser l'enchaînement de plusieurs macro, le soucis est que ces macro dépendent de la durée d'exécution de taches externe à excel.
Séparément, tout fonctionne et en pas à pas aussi, mais je patiente entre les F8,
comment "expliquer" çà en VBA

VB:
Sub A_Extraire_DICOM()           'macro qui crée des fichiers .txt
Dim RetVal As Long
Dim NOMDOSSIER$
NOMDOSSIER = ThisWorkbook.Path & "\ENTETESDICOM"
RetVal = Shell("D:\DICOMParser -fD:\IMAGESDAT -s -o" & NOMDOSSIER) 'durée d'exécution notable et aléatoire

'pour temporiser, j'avais pris l'idée de comptabiliser le nombre de fichier du dossier source, et tant qu'il n'existe pas autant de fichier .txt, on do events, .. avant d'executer la macro de renommage, mais

nbfichier = ScanFolder("D:\IMAGESDAT\")
nbfichier2 = ScanFolder("D:\ENTETESDICOM\")
Do
DoEvents
Loop Until nbfichier2 = nbfichier
bExe = True                                       'pour enchainement macro
B_Renommer_avec_dateheure_creation     'macro suivante
End Sub
Function ScanFolder(Path As String)
Dim FSO As Object, Folder As Object, File As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Path)
Set File = Folder.Files
ScanFolder = File.Count
End Function
 

Dranreb

XLDnaute Barbatruc
Re : Temporisation macro

Bonsoir.
Si nbfichier2 <> nbfichier pourquoi cela devrait il changer dans un boucle où nbfichier2 n'est pas revérifié ?
Par ailleurs je pense qu'il vaudrait mieux pas de Function ScanFolder et tout faire dans la Sub A_Extraire_DICOM.
De préférence en utilisant la réf Microsoft Scripting Runtime et nulle part de variables As Object.
Il ne resterait qu'à faire un Do until Doss2.Files.Count >= nbfichier: Doevents: Loop

Ça donnerait donc quelque chose comme ça :
VB:
Sub A_Extraire_DICOM()           'macro qui crée des fichiers .txt
Dim RetVal As Long, FSO As New FileSystemObject, NbFichiers1&, Doss2 As Folder
Dim NOMDOSSIER$
NOMDOSSIER = ThisWorkbook.Path & "\ENTETESDICOM"
RetVal = Shell("D:\DICOMParser -fD:\IMAGESDAT -s -o" & NOMDOSSIER) 'durée d'exécution notable et aléatoire

'pour temporiser, j'avais pris l'idée de comptabiliser le nombre de fichier du dossier source, et tant qu'il n'existe pas autant de fichier .txt, on do events, .. avant d'executer la macro de renommage, mais

NbFichiers1 = FSO.GetFolder("D:\IMAGESDAT").Files.Count
Set Doss2 = FSO.GetFolder("D:\ENTETESDICOM")
Do
   DoEvents
   Loop Until Doss2.Files.Count >= NbFichiers1
bExe = True                                       'pour enchainement macro
B_Renommer_avec_dateheure_creation     'macro suivante
End Sub
 
Dernière édition:

Discussions similaires

Réponses
19
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote