Recherche de fichier, copie à l'aide d'une liste - VB/VBA/VBS - Programmation
Marsh Posté le 21-02-2008 à 10:21:47
merci de ta réponse, j'étais parti sur du vbs mais pourquoi pas en batch dos si c'est plus simple, je parle de .doc car les fichiers recherchés sont en .doc
Marsh Posté le 21-02-2008 à 10:31:10
Non non, VBS c'est mieux au contraire, c'est juste que dans shell/batch ça peut être plein de choses différentes, c'est mieux de préciser.
Je t'ai rangé ton sujet dans la bonne catégorie, tu auras plus de chances de recevoir une réponse comme ça.
Marsh Posté le 21-02-2008 à 10:44:06
Ton problème peut être décomposé en sous-problèmes
1/ lecture d'un fichier texte pour les id
2/ recherche récursive de fichiers dans des dossiers
3/ copier les fichiers identifiés
Je pense que tous ces aspects là ont déjà été abordés de nombreuses fois sur ce forum.
Marsh Posté le 21-02-2008 à 10:46:32
Oui, merci j'avais déjà identifié ces points là..
Je ne m'en sort tout de même pas.
Marsh Posté le 21-02-2008 à 11:29:01
j'acance un peu..
racine= "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
Set Afolder=FSO.GetFolder(racine)
copie(Afolder)
function copie(rep)
Set TheFiles = rep.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then
AFile.Copy "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test" , true
next
for each subFolder in rep.SubFolders
copie (subFolder)
11. next
end function
mais j'ai une erreur ligne 11 Next non attendu .
Marsh Posté le 21-02-2008 à 11:58:35
racine= "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
Set Afolder=FSO.GetFolder(racine)
copie(Afolder)
function copie(rep)
Set TheFiles = rep.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then
AFile.Copy "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test" , true
End if
For Each subFolder In rep.SubFolders
copie(subFolder)
Next ****
end function
voila, mais je ne sais pas quoi mettre a la place des étoiles, il attend un argument..
Marsh Posté le 21-02-2008 à 12:08:21
yes bien vu l'aveugle !!
mais ca ne copie rien :s avec AFile.Delete ca supprimer correctement mais la copy non..
Marsh Posté le 21-02-2008 à 12:26:31
voici le code :
racine= "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
Set Afolder=FSO.GetFolder(racine)
copie(Afolder)
function copie(rep)
Set TheFiles = rep.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then
AFile.Copy "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test"
End if
For Each subFolder In rep.SubFolders
copie(subFolder)
Next
Next
End function
la copie de fichier .doc ne s'effectue pas :s
Marsh Posté le 21-02-2008 à 12:30:19
Afin d'avoir une meilleur lisibilité de tes posts, il serait judicieux que tu encadre ton code des balises [ code=vb ] et [ /code ] (en enlevant tous les espaces)
Marsh Posté le 21-02-2008 à 12:57:12
je remet le code avec les bonne balise :$
Code :
|
Marsh Posté le 21-02-2008 à 13:04:34
Copy ? Je connais CopyFile qui s'utilise de la manière suivante :
object.CopyFile source, destination[, overwrite] |
Edit : l'objet est le FSO naturellement.Par exemple :
FSO.CopyFile AFile.path "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test" |
Marsh Posté le 21-02-2008 à 13:23:02
Les sujets suivont ont étés fusionnés à ce sujet par Elmoricq
Marsh Posté le 21-02-2008 à 13:24:32
stevenhab > Pour modifier l'un de tes sujets, il te faut cliquer sur l'icone
Essaie de ne pas recréer des topics à chaque fois, depuis ce matin je repasse derrière toi pour faire le ménage...
Si tu te sens perdu avec le forum, n'hésite pas à en consulter l'aide : http://www.mesdiscussions.net/doc/user/html/
Marsh Posté le 21-02-2008 à 14:50:40
merci olivthill pour ta réponse mais je n'arrive pas a appliquer ton 2eme morceau de code..
Marsh Posté le 21-02-2008 à 15:00:35
donc je n'y arrive toujours pas, je n'arrive pas a copier mes fichier .doc
Code :
|
Marsh Posté le 21-02-2008 à 18:34:21
Voici un peu de doc sur le FileSystemObject
http://msdn2.microsoft.com/en-us/l [...] S.85).aspx
.Copy et .CopyFile peuvent être utilisés, mais avec une syntaxe et dans des contextes différents.
À toi de choisir celui qui te convient.
Marsh Posté le 21-02-2008 à 10:06:52
Bonjour à tous et à toutes !
J'ai vraiment besoin de votre aide.
Je m'explique, je cherche a écrire un script qui à l'aide d'un liste d'id (dans un fichier .txt , ex : 10456,12588...) va rechercher un fichier .doc contenant cet id, ce fichier existe mais il se trouve dans un dossier parmi 4 autres (ce qui nous fais plusieurs sous dossiers).
L'idée serait de dire, pour chaque id du fichier aller chercher le fichier correspondant et le copier/coller ailleurs.
Il faudrait également lui dire dans quel fichier racine chercher.
Si quelqu'un sait comment faire
voici quelque precision, je ne m'en sort pas, mon patron me met la pression alors que je ne suis qu'un petit stagiaire :s HELP PLEASE !
Voici ma liste d'id, je ne traite que les id > 6000 :
1015
1165
9019
9032
9202
6831
6060
6831
et je cherche dans cette architechture, là commence les pbs :s
├───Txt courants
│ ├───01_MC Originaux
│ │ ├───MC 1000-1999
│ │ │ └───ouvrages_2001-2005
│ │ └───MC 9000-9999
│ │ ├───Mc_9159
│ │ └───MC_9202
│ ├───02_MC En cours
│ └───03_MC Traités
│ ├───MC 2000-2999
│ │ ├───MC_2888
│ │ │ └───archives
│ │ └───MC_2891
│ └───MC 6000-6999
│ ├───MC_6689
│ └───MC_6831
│ └───ouvrage_6831 ancienne version
├───Txt Institutions
│ ├───01_MI Originaux
│ │ └───MI 10000-10999
│ │ └───MI_10789
│ ├───02_MI En cours
│ └───03_MI Traités
│ ├───MI 10001-10099
│ │ ├───MI_10789
│ │ │ └───PDf_divers
│ │ └───MI_10848
│ │ └───Archives
│ └───MI 4000-4999
│ ├───Mi_4445
│ │ └───Couv_4445
│ └───MI_4713
├───Txt ONG-Associations
│ ├───01_MO Originaux
│ │ ├───MO 0-999
│ │ ├───MO 1000-1999
│ │ ├───MO 10000-10999
│ │ │ └───MO_10776
│ │ ├───MO 11000-11999
│ │ ├───MO 2000-2999
│ │ ├───MO 3000-3999
│ │ │ └───ISBN-MU ID
│ │ ├───MO 4000-4999
│ │ ├───MO 5000-5999
│ │ ├───MO 6000-6999
│ │ └───MO 7000-7999
│ ├───02_MO En cours
│ │ ├───MO 0-999
│ │ │ └───MO_ID
│ │ ├───MO 1000-1999
│ │ ├───MO 10000-
│ │ ├───MO 11000-11999
│ │ ├───MO 2000-2999
│ │ ├───MO 3000-3999
│ │ │ └───ISBN-MU ID
│ │ ├───MO 4000-4999
│ │ ├───MO 5000-5999
│ │ ├───MO 6000-6999
│ │ ├───MO 7000-7999
│ │ └───MO 9000-9999
│ └───03_MO Traités
│ ├───MO 10001-10999
│ │ ├───MO_10775
│ │ └───MO_10776
│ └───MO 9000-9999
│ └───MO_9650
│ └───archives
└───Txt Universitaires
├───01_MU Originaux
│ ├───MU 5000-5999
│ └───Mu_7883
├───02_MU En cours
└───03_MU Traités
└───MU 8000-8999
├───MU_8118
└───MU_8298
voici mon code à ce jour :
Merci a vous..
Message édité par stevenhab le 22-02-2008 à 16:42:03
---------------
-- Steven