begin process at 2012 02 14 22:59:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBScript

 > 

Objet requis + nom de fichier ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Objet requis + nom de fichier ?

vendredi 19 juin 2009 à 09:38:57 | Objet requis + nom de fichier ?

pyb54

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

vendredi 19 juin 2009 à 11:46:00 | Re : Objet requis + nom de fichier ?

JMO

Membre Club


 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





jean-marc
vendredi 19 juin 2009 à 12:33:46 | Re : Objet requis + nom de fichier ?

pyb54

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

vendredi 19 juin 2009 à 20:56:33 | Re : Objet requis + nom de fichier ?

Mayzz

Membre Club
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.
<

samedi 20 juin 2009 à 09:24:40 | Re : Objet requis + nom de fichier ?

JMO

Membre Club
Réponse acceptée !


 Bonjour,

En plus de la remarque de Mayzz (bonjour), il est inutile de tester l'existence de la clé du dictionnaire.
arrDicoKeys est superflu dans cet exemple !

Option Explicit
Const ForReading = 1
Const ForWriting = 2
Dim objFso, objDico
Dim strPath, MyFileTxt

strPath = "D:\test"
MyFileTxt = "d:\RESULTAT.txt"

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objDico = CreateObject("Scripting.Dictionary")

Call CreateDictionary(objFso.GetFolder(strPath))
Call CreateTextResult(objDico, MyFileTxt)

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)

    arrDicoKeys = argDico.Keys
    arrDicoItems = argDico.Items

    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




jean-marc
mercredi 24 juin 2009 à 09:13:55 | Re : Objet requis + nom de fichier ?

pyb54

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 !!


Cette discussion est classée dans : fichier, set, sfile, strname, parcourtfichier


Répondre à ce message

Sujets en rapport avec ce message

transfert de données d'un fichier texte a excel [ par xaeris ] Bonjour tout le monde!! Je suis débutant en programmation VB Excel et je dois réaliser une procédure que je n'arrive pas a faire. La situation : vbscript [ par marie059 ] Bonjour je dois crée un script en vbscript qui dans un dossier et sous dossier choisi authorisera uniquement la lecture pour les fichiers dont la dat [VBS] Code Error 800A0401 - Expected end of statement [ par neo2k2 ] Bonjour à toutes et tous! J'ai un petit souci avec un programme en VBS que je développe pour mon travail. Le programme sert à tester l'existence d VBS - Comment passer outre l'erreur 800a0046 acces refusé [ par jakoo9 ] Bonjour,Je cherche a lire plusieurs fichiers a l'aide d'un script VBS dans un répertoire, seulement je n'ai pas accès a tous les fichiers (permission VB 6 accès fichier excel [ par tromedlov22 ] Mehdi Bonjour tout le monde!! Voilà, je suis débutant en VB et j'essai de faire une appli en VB avec 2 form : - sur le 1er j'ouvre un fichier xls et j URGENT - AVANT 13h... Executer une commande dos avec un paramétre [ par neocam ] Bonjour a tous, Pour etre bref, mon but: Je parcours un dossier contenant des pdf et j'exécute la commande "pdftotext nomfic" pour chaque fichier afin Copier fichier vers HTTP [ par spawnrad ] Bonjour, J'ai trouvé ce programme qui permet de copier un fichier et de le mettre dans un serveur http. En entrer j'indique le fichier (local) a envoy Utiliser fichier .Dat dans VB6 [ par Phalls ] Bonjour à tous,Je dois réaliser un petit programme Visual basic permettant de comparer deux données. Une se trouvant dans un fichier.Dat et l'autre da VBA Excel copier cellulles d'un fichier fermé [ par confortola ] J'ai trouvé le moyen de copier les cellules d'un fichier fermé par cette macro*********************<pre class="alt2" dir="ltr" style="border: 1px inse Génération de fichier de log [ par bozoteam01 ] Bonjour, Je travail sur un script pour l'automatisation de la configuration des adresses de dns pour plusieurs serveurs. Le script fonctionne bien je


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,869 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales