pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010
-
19 juin 2009 à 09:38
pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010
-
24 juin 2009 à 09:13
Bonjour à tous, voila j'ai un problème avec un code en vbscript, censé copier le contenu de plusieurs fichiers situés dans un même dossier dans un nouveau fichier texte. l'ennui c'est que lorsque je lance mon script j'ai un problème à la ligne : Do Until ParcourtFichier.AtEndOfStream
sachant que parcourtfichier contient le nom du fichier actuellement ciblé (avec une msgbox avant il me donne le nom du fichier), seulement il me produit une erreur "Objet requis : + le nom du fichier ciblé "
je sèche carrément la, si quelqu'un peut éclairer ma lanterne ;)
code :
Dim objFSO, oFSO, sFile, DossierOrigine, objFichier, objfile, ParcourtFichier
Const ForReading = 1
Const ForWriting = 2
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oFSO = CreateObject("Scripting.FileSystemObject")
set DossierOrigine = oFSO.GetFolder("C:\Documents and Settings\test")
set sFile = DossierOrigine.files
For Each objFichier in sFile
ParcourtFichier = objFichier.name
Do Until ParcourtFichier.AtEndOfStream
strName = sFile.ReadLine
If Not objDictionary.Exists(strName) Then
objDictionary.Add strName, strName
End If
Loop
sFile.Close
Set objFSO = Nothing
Set ParcourtFichier = Nothing
Next
Set objFso = Nothing
Set objDico = Nothing
WScript.Quit
Sub CreateDictionary(argFolder)
Dim objFile
For Each objFile In argFolder.Files
objDico.Add objFile, objFso.OpenTextFile(objFile, ForReading).ReadAll
Next
End Sub
Sub CreateTextResult(argDico, argFile)
Dim arrDicoItems, arrDicoKeys, objTextResult, i
Set objTextResult = objFso.OpenTextFile(argFile, ForWriting, True)
For i = 0 To argDico.Count -1
objTextResult.Write "Contenu du fichier " & arrDicoKeys(i) & vbcrlf
objTextResult.Write arrDicoItems(i) & vbcrlf
Next
objTextResult.Close
Set objTextResult = Nothing
End Sub
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 19 juin 2009 à 11:46
Bonjour,
Erreur dans l'utilisation du stream:
Set ObjTextStream = Fso.OpenTextFile(Path & Fichier_Entree1, 1)
Do While Not ObjTextStream.AtEndOfStream
...
Loop
Exemple en passant par un tableau
Option Explicit
Dim Path
Path = "D:\test"
Const MyFileAppend = "D:\RESULTAT.txt"
MsgBox ShowFolderList(Path),vbInformation,_
"Fichiers mis en append dans " & MyFileAppend
Function ShowFolderList(strPath)
Dim objFso, objFile, strFilesInclus, imax
Set objFso = CreateObject("Scripting.FileSystemObject")
imax = 0
For Each objFile in objFso.GetFolder(strPath).Files
ReDim Preserve arrFiles(imax)
arrFiles(imax) = objFile.Path
imax = imax + 1
strfilesInclus = strFilesInclus &vbCr& imax & _
vbTab & objFile.Name
Next
Call ReadFiles(arrFiles)
ShowFolderList = strFilesInclus
Set objFso = Nothing
End Function
Function ReadFiles(arrFiles) Const ForReading 1,ForWriting 2
Dim objFso, objTextResult, i
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTextResult = objFso.OpenTextFile(MyFileAppend, 2, True)
'Lecture du Tableau de fichier
For i = LBound(arrFiles) To UBound(arrFiles)
Dim objTextFile, strLines
'Ouverture en lecture du fichier issu du tableau
Set objTextFile = objFso.OpenTextFile(arrFiles(i),ForReading)
'Verif si fichier non vide
If objFso.GetFile(arrFiles(i)).Size <> 0 Then
strLines = objTextFile.ReadAll
'Ecriture fichier result
objTextResult.Write strLines & vbcrlf
End If
objTextFile.Close
Set objTextFile = Nothing
Next
objTextResult.Close
Set objTextResult = Nothing
Set objFso = Nothing
End function
pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010 19 juin 2009 à 12:33
Bonjour Jean marc, merci de me répondre^^ alors mon problème ( grâce à toi) à évolué ^^
en mieux évidemment, il me reste cependant un obstacle à franchir, j'ai maintenant l'erreur " fichier introuvable " alors que j'ai vérifié hein, le fichier est la, dans le bon dossier, avec le bon chemin et pourtant il le voit pas, voici le code actuel désormais :
Dim objFSO, oFSO, sFile, DossierOrigine, objFichier, objfile, ParcourtFichier, FSO
Const ForReading = 1
Const ForWriting = 2
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set FSO = CreateObject("Scripting.FileSystemObject")
set DossierOrigine = oFSO.GetFolder("C:\Documents and Settings\test")
set sFile = DossierOrigine.files
For Each objFichier in sFile
ParcourtFichier = objFichier.name
Set ObjTextStream = Fso.OpenTextFile(DossierOrigine & ParcourtFichier, 1)
Do While Not ObjTextStream.AtEndOfStream
strName = ObjTextStream.ReadLine
If Not objDictionary.Exists(strName) Then
objDictionary.Add strName, strName
End If
Loop
ObjTextStream.Close
Set objFSO = Nothing
Set ParcourtFichier = Nothing
Next
Mayzz
Messages postés2812Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 19 juin 2009 à 20:56
salut,
Je n'ai pas eu le temps de regarder ton script en détails, mais attention au "" pour les dossier le FSO les retournes au formats "X:\Dossier" et pour les lecteurs le chemin sera "X:"
Donc à la concaténation Chemin = Dossier & Fichier, bien vérifier que le \ est présent entre les deux. D'autre part, pas besoin de déclarer 3 fois un objet fso. tu peux n'avoir qu'à instancier une fois et t'en servir pour plusieurs fonctions ex:
Set FSO = CreateObject("Scripting.FileSystemObject")
set Dossier = FSO.GetFolder("chemin")
set Fichier = FSO.GetFile(Chemin)
If FSO.FileExists(chemin) then
end if
Set FSO = Nothing
@+ Mayzz.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Vous n’avez pas trouvé la réponse que vous recherchez ?
pyb54
Messages postés33Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention15 février 2010 24 juin 2009 à 09:13
Désoler de répondre que maintenant ! (tombé malade à la fête de la musique...)
Bref merci pour les conseil Mayzz, j'avoue que je ne savais pas si je devais à chaque fois recrée un objet Fso pour mon code, j'ai re vérifié les "" mais j'avais toujours le même problème puis j'ai testé le code de Jean-marc qui... fonctionne nikel
J'ai encore du chemin lol merci à vous, vraiment !!