Recherche par vbs

Résolu
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015 - 27 déc. 2006 à 14:34
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015 - 28 déc. 2006 à 13:31
Bonjour Le forum

Tout aide serait la bienvenue, j' ai besoin de faire une rechercehe simple avec un liste de nom dans un fichier txt. Le script serait de type vb script et recupererait à partir de la liste les noms et me les soit supprimeraient où les déplaceraient dans un autre répertoire.
Merci à tous ceux qui pourraient me venir en aide

barada

12 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
28 déc. 2006 à 12:42
 Bonjour

mon fichier "test_fichiers.txt" contient les lignes suivantes:
MARC001
MARC002
MARC003

dans le répertoire Path, j'ai créé 2 fichiers (MARC001.txt et MARC003.txt)

Après exec du code, les 2 fichiers ont été déplacés dans RepSauv.

Option Explicit
Dim Fso, Fichier, Path, RepSauv
Set Fso = CreateObject("Scripting.FileSystemObject")



Fichier = "test_fichiers.txt"
Path  = "D:\Mes_scripts_VBFrance"
RepSauv = "D:\Mes_scripts_VBFrance\test"



If Fso.FileExists(Path & Fichier) Then
'-----------------------------------------------------------
'Lecture et mise en variable du contenu du fichier en entrée
'-----------------------------------------------------------
   Const ForReading = 1
   Dim objTextStream, i
   Set objTextStream = Fso.OpenTextFile(Path & Fichier, ForReading)



   Dim Fic()
   ReDim Fic(0)



   Do While Not ObjTextStream.AtEndOfStream
      ReDim Preserve Fic(UBound(Fic) + 1)
      Fic(UBound(Fic)) = ObjTextStream.ReadLine
   Loop
   objTextStream.Close
   Set objTextStream = Nothing
End If



For i=1 To UBound(Fic)
    If fso.FileExists(Path & Fic(i) & ".txt") Then
       If fso.FileExists(RepSauv & Fic(i) & ".txt") Then Fso.DeleteFile(RepSauv & Fic(i) & ".txt")
       fso.MoveFile Path & Fic(i) & ".txt", RepSauv & Fic(i) & ".txt"
    End If
Next



Set Fso  = Nothing





Je regarde pour traiter un fichier contenant:
MARC001;MARC002;
MARC003;MARC004;MARC005;MARC007;
MARC006;MARC012;

jean-marc
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
28 déc. 2006 à 13:08
 Re,

mon fichier "test_fichiers.txt" contient les lignes suivantes:
MARC001;MARC002;MARC003;
MARC004;MARC005;MARC007;MARC009;MARC010;MARC011;
MARC006;MARC008;MARC0013;

dans le répertoire Path, j'ai créé 2 fichiers (MARC006.txt et MARC009.txt)

A l'exécution du code ci-dessous, j'affiche bien un msgbox pour les 2 fichiers.

If Fso.FileExists(Path & Fichier) Then
'-----------------------------------------------------------
'Lecture et mise en variable du contenu du fichier en entrée
'-----------------------------------------------------------
   Const ForReading = 1
   Dim objTextStream, Contenu, strtmp, i
   Set objTextStream = Fso.OpenTextFile(Path & Fichier, ForReading)
   Do While Not ObjTextStream.AtEndOfStream
      strtmp = split(ObjTextStream.ReadLine, ";")
 
      If IsArray(strtmp) = False Then
         Else
         For i = 0 to Ubound(strtmp)
             'MsgBox strtmp(i),,"élément de mon tableau"
             If Fso.FileExists(Path & strtmp(i) & ".txt") Then
             MsgBox Path & strtmp(i) & ".txt",,"le fichier existe !"
             End If
      Next
      End If
   Loop
   objTextStream.Close
   Set objTextStream = Nothing
End If
Set Fso  = Nothing

jean-marc
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 déc. 2006 à 15:01
 Bonjour,

Exemple pour lire ligne par ligne un .txt

Dim Fso, Fichier
Set Fso = CreateObject("Scripting.FileSystemObject")
Fichier  = "d:\test.txt"



If Fso.FileExists(Fichier) Then
'-----------------------------------------------------------
'Lecture et mise en variable du contenu du fichier en entrée
'-----------------------------------------------------------
   Const ForReading = 1
   Dim objTextStream, Contenu, strtmp, i
   Set objTextStream = Fso.OpenTextFile(Fichier, ForReading)
   Do While Not ObjTextStream.AtEndOfStream
      strtmp = split(ObjTextStream.ReadLine, vbLf)
      For i = 0 to Ubound(strtmp)
          Contenu = Contenu &vbCrLf& strtmp(i)
          MsgBox Contenu
      Next
   Loop
   objTextStream.Close
   Set objTextStream = Nothing
End If
Set Fso  = Nothing





jean-marc
0
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015
27 déc. 2006 à 15:13
Bonjour Jean-Marc

Merci pour ta réponse, mais dans ton code il ne  fait pas  la recherche du nom qu' il a lu et pour le deplacer vers un autre répertoire

barada
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 déc. 2006 à 15:19
 re,

Dim Fso, Fichier, Path, FicSauv
Set Fso = CreateObject("Scripting.FileSystemObject")
Fichier  = "d:\test.txt"
Path = "D:\TEST"




If Fso.FileExists(Fichier) Then
'-----------------------------------------------------------
'Lecture et mise en variable du contenu du fichier en entrée
'-----------------------------------------------------------
   Const ForReading = 1
   Dim objTextStream, Contenu, strtmp, i
   Set objTextStream = Fso.OpenTextFile(Fichier, ForReading)
   Do While Not ObjTextStream.AtEndOfStream
      strtmp = split(ObjTextStream.ReadLine, vbLf)
      For i = 0 to Ubound(strtmp)
          If Fso.FileExists(Path & strtmp(i)) Then
             MsgBox strtmp(i)
       ''''''''      Fso.CopyFile strtmp(i), FicSauv
          End If
      Next
   Loop
   objTextStream.Close
   Set objTextStream = Nothing
End If
Set Fso  = Nothing

jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 déc. 2006 à 15:25
 re

Oups....

RepSauv = "d:\sauvegarde"

fso.MoveFile Path & strtmp(i), RepSauv & strtmp(i)
ou
fso.DeleteFile Path & strtmp(i)

jean-marc
0
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015
27 déc. 2006 à 15:40
Rebonjour Jean-Marc

Je prépare un fichier txt et testerai ton script et te donnerai un réponse, d' avance te remercie 

Barada
 
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 déc. 2006 à 17:37
 Re,

Autre exemple, avec ReDim:

Option Explicit
Dim Fso, Fichier, Path, RepSauv
Set Fso = CreateObject("Scripting.FileSystemObject")



Fichier = "test_fichiers.txt"
'
' Fichier contient 2 lignes:
'mon_fichier2.txt
'mon_fichier5.txt
'
Path  = "D:\Mes_scripts_VBFrance"
RepSauv = "D:\Mes_scripts_VBFrance\test"



If Fso.FileExists(Path & Fichier) Then
'-----------------------------------------------------------
'Lecture et mise en variable du contenu du fichier en entrée
'-----------------------------------------------------------
   Const ForReading = 1
   Dim objTextStream, i
   Set objTextStream = Fso.OpenTextFile(Path & Fichier, ForReading)



   Dim Fic()
   ReDim Fic(0)



   Do While Not ObjTextStream.AtEndOfStream
      ReDim Preserve Fic(UBound(Fic) + 1)
      Fic(UBound(Fic)) = ObjTextStream.ReadLine
   Loop
   objTextStream.Close
   Set objTextStream = Nothing
End If



For i=1 To UBound(Fic)
    If fso.FileExists(Path & Fic(i)) Then
       If fso.FileExists(RepSauv & Fic(i)) Then Fso.DeleteFile(RepSauv & Fic(i))
       fso.MoveFile Path & Fic(i), RepSauv & Fic(i)
       MsgBox RepSauv & Fic(i)
    End If
Next



Set Fso  = Nothing





jean-marc
0
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015
27 déc. 2006 à 18:12
Bonsoir Jean Marc

Lors du test j' ai une erreur ligne 33 avec UBound
de type icompatible

barada
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 déc. 2006 à 18:49
 Re,

J'ai testé les 2 propositions, pas de problème, même avec un fichier vide.
Que contient le fichier en entrée ??? Y a-t-il des lignes vides (ici, je ne le vérifie pas) ???

pour la 1ère proposition, on peut rajouter un test ... si strtmp est un tableau.

      strtmp = split(ObjTextStream.ReadLine, vbLf)
  
      If IsArray(strtmp) = False Then
         Else
         For i = 0 to Ubound(strtmp)
             MsgBox strtmp(i),,"élément de mon tableau"
             If Fso.FileExists(Path & strtmp(i)) Then
             MsgBox strtmp(i),,"le fichier existe !"
             End If
      Next
      End If

jean-marc
0
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015
28 déc. 2006 à 10:59
Bonjour Jean-marc

Le fichier est de type tableau rempli de la maniere suivante
MARC001
MARC002
Où on peut le remplir comme ceci MARC001; MARC002 .....etc

Cdt
0
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015
28 déc. 2006 à 13:31
rebonjour Jean-marc

j' ai teste l' avant dernière version et ça fonctionne impeccable et te remercie pour ton travail.

Barada
0
Rejoignez-nous