Détecter l'arrivée d'un nouveau fichier dans un dossier
Le
Dany Shore
Bonjour à tous,
Je suis étudiant en génie chimique et je travaille
présentement à mon projet de fin d'études en pâtes et
papiers. Je dois mesurer des centaines et des centaines
d'échantillons de papier sur un
spectrophotomètrel'appareil est relié à un PC et me
permet d'exporter les résultats dans un classeur excel.
Je peux choisir d'enregistrer les résultats de 3façons :
Nom de l'échantillon.xls ; Date.xls ; Heure.xls ou
n'importe quelle combinaison des troispar exemple
date/heure.xls ressemblerait à ceci : 20031009162317.xls
ce qui veut dire que j'ai pris ma mesure à 16h23min et
17secondes le 9octobre 2003
À partir de ces mesures j'ai de nombreux calculs à
effectuer.Afin de sauver du temps j'aimerais automatiser
le processus avec l'aide d'une macro dans excelj'ai
fait une template dans une feuille excel incluant tous les
calculs dont j'ai besoin pour mon projet. Je suis en
mesure de réaliser une macro qui fait du
copier/collerelle prend les valeurs dont j'ai besoin
dans le fichier excel des mesures et les colle dans ma
template et les imprime automatiquementmalheureusement
à chaque fois je dois réduire la fenêtre de l'interface du
spectrophotomètreouvrir le fichier excel contenant les
valeurs mesuréslancer la macro pour avoir mes calculs
et leurs impressions.
J'aimerais savoir s'il serait possible de lancer une macro
à partir de ma template qui détecterait si il y a un
nouveau fichier excel de mesures arrivé dans le dossier
MESURE. Par exemple je prends une mesure sur un
échantillon à 16h15min30sle fichier est exporté
automatiquement dans le dossier MESURE et est enregistré
automatiquement d'une des façons décrites
précédemmentla macro détecte ce nouveau fichiercopie
les valeurs sélectionnés et les colle dans la template et
les imprimeje mesure un nouvel échantillon à
16h16min35sce nouveau fichier est exporté dans le
dossier MESUREla macro détecte l'arrivée de ce nouveau
fichiercopie les valeurs sélectionnés et les colle dans
la templateles imprimeet ainsi de suite.
Serait-il possible de programmer quelquechose dans la
macro qui détecterait l'arrivée d'un nouveau fichier dans
un même dossiervoilà mon principal problèmeJ'imagine
qu'il doit y avoir une solutionsoit en appelant chacun
des fichiers de mesure 1.xls 2.xls 3.xls ou avec l'heure
et la datela macro détecte le fichier le plus
récentcopie les valeursles colle dans la
templateles imprimeet voilà plus besoin d'ouvrir à
chaque fois les fichiers de mesure et de lancer à chaque
fois la macro!
Si quelqu'un pourrait me proposer une
solutionj'apprécierais beaucoup!
Merci,
Dany
Je suis étudiant en génie chimique et je travaille
présentement à mon projet de fin d'études en pâtes et
papiers. Je dois mesurer des centaines et des centaines
d'échantillons de papier sur un
spectrophotomètrel'appareil est relié à un PC et me
permet d'exporter les résultats dans un classeur excel.
Je peux choisir d'enregistrer les résultats de 3façons :
Nom de l'échantillon.xls ; Date.xls ; Heure.xls ou
n'importe quelle combinaison des troispar exemple
date/heure.xls ressemblerait à ceci : 20031009162317.xls
ce qui veut dire que j'ai pris ma mesure à 16h23min et
17secondes le 9octobre 2003
À partir de ces mesures j'ai de nombreux calculs à
effectuer.Afin de sauver du temps j'aimerais automatiser
le processus avec l'aide d'une macro dans excelj'ai
fait une template dans une feuille excel incluant tous les
calculs dont j'ai besoin pour mon projet. Je suis en
mesure de réaliser une macro qui fait du
copier/collerelle prend les valeurs dont j'ai besoin
dans le fichier excel des mesures et les colle dans ma
template et les imprime automatiquementmalheureusement
à chaque fois je dois réduire la fenêtre de l'interface du
spectrophotomètreouvrir le fichier excel contenant les
valeurs mesuréslancer la macro pour avoir mes calculs
et leurs impressions.
J'aimerais savoir s'il serait possible de lancer une macro
à partir de ma template qui détecterait si il y a un
nouveau fichier excel de mesures arrivé dans le dossier
MESURE. Par exemple je prends une mesure sur un
échantillon à 16h15min30sle fichier est exporté
automatiquement dans le dossier MESURE et est enregistré
automatiquement d'une des façons décrites
précédemmentla macro détecte ce nouveau fichiercopie
les valeurs sélectionnés et les colle dans la template et
les imprimeje mesure un nouvel échantillon à
16h16min35sce nouveau fichier est exporté dans le
dossier MESUREla macro détecte l'arrivée de ce nouveau
fichiercopie les valeurs sélectionnés et les colle dans
la templateles imprimeet ainsi de suite.
Serait-il possible de programmer quelquechose dans la
macro qui détecterait l'arrivée d'un nouveau fichier dans
un même dossiervoilà mon principal problèmeJ'imagine
qu'il doit y avoir une solutionsoit en appelant chacun
des fichiers de mesure 1.xls 2.xls 3.xls ou avec l'heure
et la datela macro détecte le fichier le plus
récentcopie les valeursles colle dans la
templateles imprimeet voilà plus besoin d'ouvrir à
chaque fois les fichiers de mesure et de lancer à chaque
fois la macro!
Si quelqu'un pourrait me proposer une
solutionj'apprécierais beaucoup!
Merci,
Dany

Poser une question


Il y a bien des méthodes pour lister les fichiers existant dans un
sous-répertoire. Toutefois, les deux premières interrogations qui me
viennent sont :
- quel est le rythme d'arrivée des fichiers ?
- les fichiers restent-ils dans MESURE ?
D'une part, si les fichiers restent dans MESURE, cela veut dire qu'il y
a de plus en plus de fichiers à lister, donc que le temps de traitement
va augmenter. Par contre, si le fichier traité est ensuite (ou d'abord)
évacué dans un s/r à part, lister prendra constamment peu de temps.
D'autre part, vérifier si l'arrivée des fichiers est plus lente que le
traitement (c'est l'expérience qui va parler).
Pour lister les fichiers tu peux utiliser un truc comme :
With Application.FileSearch
.NewSearch
' .FileType = msoFileTypeAllFiles
.FileName = "*.XLS"
.LookIn = "C:MESURE"
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
End With
Sache que le code précédent liste les fichiers dans l'ordre
alphabétique. Si tu conserves le principe des AAAAMMJJhhmmss, il ne
devrait pas y avoir de problème d'ordre pour traiter puisque le 1er
fichier sera le plus vieux. Tu peux relister autant de fois que tu veux
pour les avoir au fur et à mesure.
Cas particulier qui peut faire gagner du temps : tu évacues les fichiers
et le traitement prend BEAUCOUP moins de temps que l'intervalle
d'arrivée => il n'y aura qu'un fichier listé. A ce moment,
workbooks.open .foundfiles(1) ouvre le seul et unique fichier ...
Boucles en long, large et en travers, mais ça risque de devenir une
usine à gaz. Excel gérant assez mal le temps réel, ne vaudrait-il pas
mieux traiter à postériori une fois tous les fichiers arrivés ?
@+
FxM
Dany Shore wrote: