Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Détecter l'arrivée d'un nouveau fichier dans un dossier

1 réponse
Avatar
Dany Shore
Bonjour =E0 tous,=20

Je suis =E9tudiant en g=E9nie chimique et je travaille=20
pr=E9sentement =E0 mon projet de fin d'=E9tudes en p=E2tes et=20
papiers. Je dois mesurer des centaines et des centaines=20
d'=E9chantillons de papier sur un=20
spectrophotom=E8tre...l'appareil est reli=E9 =E0 un PC et me=20
permet d'exporter les r=E9sultats dans un classeur excel.=20

Je peux choisir d'enregistrer les r=E9sultats de 3fa=E7ons :=20
Nom de l'=E9chantillon.xls ; Date.xls ; Heure.xls ou=20
n'importe quelle combinaison des trois...par exemple=20
date/heure.xls ressemblerait =E0 ceci : 20031009162317.xls=20
ce qui veut dire que j'ai pris ma mesure =E0 16h23min et=20
17secondes le 9octobre 2003=20

=C0 partir de ces mesures j'ai de nombreux calculs =E0=20
effectuer.Afin de sauver du temps j'aimerais automatiser=20
le processus avec l'aide d'une macro dans excel...j'ai=20
fait une template dans une feuille excel incluant tous les=20
calculs dont j'ai besoin pour mon projet. Je suis en=20
mesure de r=E9aliser une macro qui fait du=20
copier/coller...elle prend les valeurs dont j'ai besoin=20
dans le fichier excel des mesures et les colle dans ma=20
template et les imprime automatiquement...malheureusement=20
=E0 chaque fois je dois r=E9duire la fen=EAtre de l'interface du=20
spectrophotom=E8tre...ouvrir le fichier excel contenant les=20
valeurs mesur=E9s...lancer la macro pour avoir mes calculs=20
et leurs impressions.=20

J'aimerais savoir s'il serait possible de lancer une macro=20
=E0 partir de ma template qui d=E9tecterait si il y a un=20
nouveau fichier excel de mesures arriv=E9 dans le dossier=20
MESURE. Par exemple je prends une mesure sur un=20
=E9chantillon =E0 16h15min30s...le fichier est export=E9=20
automatiquement dans le dossier MESURE et est enregistr=E9=20
automatiquement d'une des fa=E7ons d=E9crites=20
pr=E9c=E9demment...la macro d=E9tecte ce nouveau fichier...copie=20
les valeurs s=E9lectionn=E9s et les colle dans la template et=20
les imprime...je mesure un nouvel =E9chantillon =E0=20
16h16min35s...ce nouveau fichier est export=E9 dans le=20
dossier MESURE...la macro d=E9tecte l'arriv=E9e de ce nouveau=20
fichier...copie les valeurs s=E9lectionn=E9s et les colle dans=20
la template...les imprime...et ainsi de suite.=20

Serait-il possible de programmer quelquechose dans la=20
macro qui d=E9tecterait l'arriv=E9e d'un nouveau fichier dans=20
un m=EAme dossier...voil=E0 mon principal probl=E8me...J'imagine=20
qu'il doit y avoir une solution...soit en appelant chacun=20
des fichiers de mesure 1.xls 2.xls 3.xls ou avec l'heure=20
et la date...la macro d=E9tecte le fichier le plus=20
r=E9cent...copie les valeurs...les colle dans la=20
template...les imprime...et voil=E0 plus besoin d'ouvrir =E0=20
chaque fois les fichiers de mesure et de lancer =E0 chaque=20
fois la macro!=20

Si quelqu'un pourrait me proposer une=20
solution...j'appr=E9cierais beaucoup!=20

Merci,=20
Dany

1 réponse

Avatar
FxM
Bonsoir Dany,

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:
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ètre...l'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 trois...par 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 excel...j'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/coller...elle prend les valeurs dont j'ai besoin
dans le fichier excel des mesures et les colle dans ma
template et les imprime automatiquement...malheureusement
à chaque fois je dois réduire la fenêtre de l'interface du
spectrophotomètre...ouvrir le fichier excel contenant les
valeurs mesurés...lancer 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 à 16h15min30s...le fichier est exporté
automatiquement dans le dossier MESURE et est enregistré
automatiquement d'une des façons décrites
précédemment...la macro détecte ce nouveau fichier...copie
les valeurs sélectionnés et les colle dans la template et
les imprime...je mesure un nouvel échantillon à
16h16min35s...ce nouveau fichier est exporté dans le
dossier MESURE...la macro détecte l'arrivée de ce nouveau
fichier...copie les valeurs sélectionnés et les colle dans
la template...les imprime...et 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 dossier...voilà mon principal problème...J'imagine
qu'il doit y avoir une solution...soit en appelant chacun
des fichiers de mesure 1.xls 2.xls 3.xls ou avec l'heure
et la date...la macro détecte le fichier le plus
récent...copie les valeurs...les colle dans la
template...les imprime...et 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
solution...j'apprécierais beaucoup!

Merci,
Dany