OVH Cloud OVH Cloud

Générer une copie de fichiers

9 réponses
Avatar
phil.aline.naudin
Bonsoir,

Je pose cette question sur le forum d'Excel mais je me demande si il ne
serait pas judicieux de le faire sur Windows ... bon je verrai bien vos
réponses.


Mon Blème,
J'ai une colonne de 35000 données dans un fichier Excel de type numérique
sous la forme "57463001001". Cette donnée est le nom d'une image qui se
trouve dans un répertoire.
Je dois contrôler 10% des 35000 images soit 3500.

J'ai effectué un tri en utilisant une formule "Offerte" par François, voir
Post "Statistique".

Maintenant que j'ai mon échantillonnage je souhaiterai créer automatiquement
une copie dans un fichier Temp par exemple des 3500 images à contrôler.

Je crois qu'il faut passer par un ".bat" d'où mon inquiétude sur le fait
qu'il vaudrait mieux poser ce Post dans Windows.

Malgré tout merci pour votre lecture et vos conseils

Bonne nuit.

9 réponses

Avatar
Francois
Bonsoir,



Mon Blème,
J'ai une colonne de 35000 données dans un fichier Excel de type numérique
sous la forme "57463001001". Cette donnée est le nom d'une image qui se
trouve dans un répertoire.
(...)
Maintenant que j'ai mon échantillonnage je souhaiterai créer automatiquement
une copie dans un fichier Temp par exemple des 3500 images à contrôler.



Bonjour,

Avec VBA...

En supposant que ton échantillon se trouve dans la colonne A, à partir
de la ligne 1 ...

Sub copie_echant()
Dim i
Dim Src$, Dest$, Fich$
i = 1
While i < 3501
Fich = Range("A" & i).Value & ".jpg"
Src = "c:mes documentsmes images" & Fich
Dest = "c:temp" & Fich
FileCopy Src, Dest
i = i + 1
Wend
End Sub



Dans cet exemple, les fichiers sont supposés être en jpg, à modifier
éventuellement, provenir de "c:mes documentsmes images" et être
copiés vers "c:temp"

Les gourous du MPFE vont surement proposer plus efficace, mais ça
devrait le faire. Testé mais sur un petit nombre de fichiers, faire une
sauvegarde par prudence avant de lancer l'opération.

--
François L

Avatar
phil.aline.naudin
Bonjour,

Merci François pour cette solution.
Je vais tester avant tout une première soluce donnée depuis Windows 2000.
Dans un deuxième temps je testerai la tienne et je verrai si il y a plus de
facilité pour l'une ou pour l'autre.

Dans tous les cas je rebouclerai avec toi

Encore Merci pour l'ensemble de tes solutions "Stats" et "fichiers"

"Francois" a écrit dans le message de news:

Bonsoir,



Mon Blème,
J'ai une colonne de 35000 données dans un fichier Excel de type numérique
sous la forme "57463001001". Cette donnée est le nom d'une image qui se
trouve dans un répertoire.
(...)
Maintenant que j'ai mon échantillonnage je souhaiterai créer
automatiquement une copie dans un fichier Temp par exemple des 3500
images à contrôler.



Bonjour,

Avec VBA...

En supposant que ton échantillon se trouve dans la colonne A, à partir de
la ligne 1 ...

Sub copie_echant()
Dim i
Dim Src$, Dest$, Fich$
i = 1
While i < 3501
Fich = Range("A" & i).Value & ".jpg"
Src = "c:mes documentsmes images" & Fich
Dest = "c:temp" & Fich
FileCopy Src, Dest
i = i + 1
Wend
End Sub



Dans cet exemple, les fichiers sont supposés être en jpg, à modifier
éventuellement, provenir de "c:mes documentsmes images" et être copiés
vers "c:temp"

Les gourous du MPFE vont surement proposer plus efficace, mais ça devrait
le faire. Testé mais sur un petit nombre de fichiers, faire une sauvegarde
par prudence avant de lancer l'opération.

--
François L



Avatar
Rai
Bonsoir,



Mon Blème,
J'ai une colonne de 35000 données dans un fichier Excel de type
numérique sous la forme "57463001001". Cette donnée est le nom d'une
image qui se trouve dans un répertoire.
(...)
Maintenant que j'ai mon échantillonnage je souhaiterai créer
automatiquement une copie dans un fichier Temp par exemple des 3500
images à contrôler.



Bonjour,

Avec VBA...

En supposant que ton échantillon se trouve dans la colonne A, à partir
de la ligne 1 ...

Sub copie_echant()
Dim i
Dim Src$, Dest$, Fich$
i = 1
While i < 3501
Fich = Range("A" & i).Value & ".jpg"
Src = "c:mes documentsmes images" & Fich
Dest = "c:temp" & Fich
FileCopy Src, Dest
i = i + 1
Wend
End Sub



Dans cet exemple, les fichiers sont supposés être en jpg, à modifier
éventuellement, provenir de "c:mes documentsmes images" et être
copiés vers "c:temp"

Les gourous du MPFE vont surement proposer plus efficace, mais ça
devrait le faire. Testé mais sur un petit nombre de fichiers, faire une
sauvegarde par prudence avant de lancer l'opération.

Bonjour,


Sans me ranger dans le clan des gourous, je proposerais une proédure
légèrement améliorée (tout en confirmant que la tienne fonctionne ...
donc est bonne)

Sub copie_echant()
CheminOrg$="C:mes documentsmes images"
CheminDest$="C:temp"

For i=1 to 3500
NomImage = Cells(i, 1).Value & ".jpg"
FileCopy CheminOrg & NomImage, CheminDest & NomImage
Next i
End Sub

Cordialement

Rai


Avatar
Francois

(...)Sans me ranger dans le clan des gourous, je proposerais une proédure
légèrement améliorée (tout en confirmant que la tienne fonctionne ...
donc est bonne)

Sub copie_echant()
CheminOrg$="C:mes documentsmes images"
CheminDest$="C:temp"

For i=1 to 3500
(...)



Bonsoir Rai,

En deux mots ou un lien, est ce que tu peux me dire pourquoi la boucle
For ... next est préférable à While ... Wend.

Merci

--
François L

Avatar
phil.aline.naudin
Bonsoir,
J'ai testé ta Macro et elle bloque au niveau de la ligne FileCopy Src, Dest.
Elle me donne comme numéro d'erreur le 76.
J'ai posé ta macro au niveau de la feuille, peut-être une erreur de ma part
?

Par contre j'ai une question :
L'extention de l'image n'est pas jpeg mais un nombre (Format spécial
Micro-station). Celà donne 57010010.463
Comment puis-je avoir un terme générique car dans mon exemple je te donne
463 mais j'ai la panoplie 001 à 999

Merci pour tes réponses




"Francois" a écrit dans le message de news:

Bonsoir,



Mon Blème,
J'ai une colonne de 35000 données dans un fichier Excel de type numérique
sous la forme "57463001001". Cette donnée est le nom d'une image qui se
trouve dans un répertoire.
(...)
Maintenant que j'ai mon échantillonnage je souhaiterai créer
automatiquement une copie dans un fichier Temp par exemple des 3500
images à contrôler.



Bonjour,

Avec VBA...

En supposant que ton échantillon se trouve dans la colonne A, à partir de
la ligne 1 ...

Sub copie_echant()
Dim i
Dim Src$, Dest$, Fich$
i = 1
While i < 3501
Fich = Range("A" & i).Value & ".jpg"
Src = "c:mes documentsmes images" & Fich
Dest = "c:temp" & Fich
FileCopy Src, Dest
i = i + 1
Wend
End Sub



Dans cet exemple, les fichiers sont supposés être en jpg, à modifier
éventuellement, provenir de "c:mes documentsmes images" et être copiés
vers "c:temp"

Les gourous du MPFE vont surement proposer plus efficace, mais ça devrait
le faire. Testé mais sur un petit nombre de fichiers, faire une sauvegarde
par prudence avant de lancer l'opération.

--
François L



Avatar
Francois
Bonsoir,


Bonjour,

J'ai testé ta Macro et elle bloque au niveau de la ligne FileCopy Src, Dest.
Elle me donne comme numéro d'erreur le 76.
J'ai posé ta macro au niveau de la feuille, peut-être une erreur de ma part
?


La macro était à mettre dans un module standard.


Par contre j'ai une question :
L'extention de l'image n'est pas jpeg mais un nombre (Format spécial
Micro-station). Celà donne 57010010.463
Comment puis-je avoir un terme générique car dans mon exemple je te donne
463 mais j'ai la panoplie 001 à 999



Là ça se complique un peu... je vais essayer de regarder cela ce soir...
En attendant, si d'autres peuvent s'y coller dans la journée, pas de soucis.

--
François L

Avatar
Francois
(...)

Par contre j'ai une question :
L'extention de l'image n'est pas jpeg mais un nombre (Format spécial
Micro-station). Celà donne 57010010.463
Comment puis-je avoir un terme générique car dans mon exemple je te donne
463 mais j'ai la panoplie 001 à 999



Re,

Normalement, la macro qui suit devrait le faire, à adapter pour les
chemins source et destination des fichiers. Ici la source est
"c:mes documentsmes images"
la destination est
"c:temp"

Sub copie_echant()
Dim i
i = 1
Set fs = CreateObject("Scripting.FileSystemObject")
While i < 3501
fs.copyfile "c:mes documentsmes images" _
& Range("A" & i).Value & ".*", _
"c:temp"
i = i + 1
Wend
End Sub

--
François L

Avatar
phil.aline.naudin
Bonjour,
Merci pour ton dévouement car posé un Post à 7h00 et trouver une soluce à
7h23 !!!
Ton Boss a beaucoup de chance

Ta Macro fonctionne et elle va me faciliter la vie.

Par pur curiosité (Rappel : Je suis nul en VBA!)
Pourquoi je devais poser ton code dans un modul ?
Existe -t-il un moyen de confirmer le démarrage puis la Fin de la macro par
un message box, avec par exemple le nombre de fichiers copiés ?
Pourquoi si je mais dans la boucle plus de lignes que de fichiers j'ai une
erreur ?

Bon j'arrête avec mes questions ...

Encore merci


"Francois" a écrit dans le message de news:
uopg%
(...)

Par contre j'ai une question :
L'extention de l'image n'est pas jpeg mais un nombre (Format spécial
Micro-station). Celà donne 57010010.463
Comment puis-je avoir un terme générique car dans mon exemple je te donne
463 mais j'ai la panoplie 001 à 999



Re,

Normalement, la macro qui suit devrait le faire, à adapter pour les
chemins source et destination des fichiers. Ici la source est
"c:mes documentsmes images"
la destination est
"c:temp"

Sub copie_echant()
Dim i
i = 1
Set fs = CreateObject("Scripting.FileSystemObject")
While i < 3501
fs.copyfile "c:mes documentsmes images" _
& Range("A" & i).Value & ".*", _
"c:temp"
i = i + 1
Wend
End Sub

--
François L



Avatar
Francois
Bonjour,


Bonjour,


(...)
Ton Boss a beaucoup de chance


Sans doute, ;-) mais il n'a pas vraiment l'air de le savoir !


Par pur curiosité (Rappel : Je suis nul en VBA!)
Pourquoi je devais poser ton code dans un modul ?


Ce n'est pas moi qui t'apporterai une réponse très claire... mais les
modules de feuille sont plutôt utilisés pour déclencher une procédure
sur un évènement de type sur activation, sur changement de la sélection,
etc.

Existe -t-il un moyen de confirmer le démarrage puis la Fin de la macro par
un message box, avec par exemple le nombre de fichiers copiés ?


Oui mais de toute façon, telle que la macro est écrite, elle copie le
nombre de fichiers déclaré par la boucle While... Wend

Pourquoi si je mais dans la boucle plus de lignes que de fichiers j'ai une
erreur ?



C'est lié aux instructions utilisées par la macro (voir l'aide d'excel)
qui, de plus, ne comporte aucune gestion d'erreur, ce qui n'est pas
conforme aux règles de bonne programmation !

--
François L