Récupérer une variable dans une chaine de caractere et comparer une date.

Résolu
LePetitNiko Messages postés 5 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 17 octobre 2007 - 16 oct. 2007 à 16:08
LePetitNiko Messages postés 5 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 17 octobre 2007 - 17 oct. 2007 à 13:11
Bonjour à tous,

Je viens ici soliciter un peu de votre aide.
Je vous explique :

J'ai un fichier txt avec une liste de nom de repertoire type :

"REPERTOIREXX1 - MODIFIE LE 02 06 07"
"REPERTOIREX2 - MODIFIE LE 04 09 07
"REPERTOIREXXX3 - MODIFIE LE 10 09 07
"REPERTOIRE4 - MODIFIE LE 20 11 06"

Est-il possible en VB de récuperer en sortie dans un autre fichier texte la liste des repertoires qui ont été modifié durant les derniers 15 jours.... en comparant donc les derniers caractères du nom de repertoire donc "02 06 07" par exemple pour le premier de la liste à la date du jour....

Merci pour votre aide...

6 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
16 oct. 2007 à 19:09
 Bonsoir,

Ce n'est pas une réponse en vb6, mais facilement adaptable.
Utilisation du split sur " et du filter sur -

Option explicit
Dim objFso, Fichier, Path
Set objFso = CreateObject("Scripting.FileSystemObject")

Fichier = "fichier.txt"
Path  = "D:\SCRIPTS\Fichiers"

Const ForReading = 1
Dim objTextStream, arrFiles, i
Set objTextStream = objFso.OpenTextFile(Path & Fichier, ForReading)
Do While Not ObjTextStream.AtEndOfStream
   arrFiles = Filter(split(ObjTextStream.ReadLine, """"),"-")
   If IsArray(arrFiles) = False Then
      Else
      For i = 0 To Ubound(arrFiles)
          MsgBox arrFiles(i) &vbCrLf& CDate(Right(arrFiles(i),8)) &vbCrLf& _
                 Date & vbCrLf& _
                 DateDiff("d", CDate(Right(arrFiles(i),8)), Date) _
                 ,,"élément de mon tableau"
          'Verif sur 42 jours: 2 msgbox affichées (1ère et 4ème)
          If DateDiff("d", CDate(Right(arrFiles(i),8)), Date) > 42 Then _
             MsgBox arrFiles(i),,"date supérieure"
      Next
   End If
Loop
objTextStream.Close
Set objTextStream = Nothing
Set objFso  = 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
17 oct. 2007 à 12:31
 Bonjour

A adapter.

Option explicit
Dim objFso, Fichier, Path, FicOut, resultat
Set objFso = CreateObject("Scripting.FileSystemObject")

Fichier = "fichier.txt"
FicOut  = "fichier_resultat.txt"
Path  = "D:\SCRIPTS\Fichiers"
Const ForReading 1, ForWriting 2
Dim objTextStream, arrFiles, i
Set objTextStream = objFso.OpenTextFile(Path & Fichier, ForReading)
Do While Not ObjTextStream.AtEndOfStream
   arrFiles = Filter(split(ObjTextStream.ReadLine, """"),"-")
   If IsArray(arrFiles) = False Then
      Else
      For i = 0 To Ubound(arrFiles)
          'Verif sur 42 jours: 2 msgbox affichées (1ère et 4ème)
          If DateDiff("d", CDate(Right(arrFiles(i),8)), Date) > 42 Then
             resultat = arrFiles(i) &vbCrLf& resultat
          End if            
      Next
   End If
Loop
objTextStream.Close
Set objTextStream = objFso.CreateTextFile(Path & FicOut, ForWriting)
objTextStream.WriteLine resultat
objTextStream.Close
Set objTextStream = Nothing
Set objFso  = Nothing

jean-marc
3
LePetitNiko Messages postés 5 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 17 octobre 2007
16 oct. 2007 à 16:12
Bonjour à tous, Je viens ici soliciter un peu de votre aide.Je vous explique :

J'ai un fichier txt avec une liste de nom de repertoire type :
"REPERTOIREXX1 - MODIFIE LE 02 06 07"
"REPERTOIREX2 - MODIFIE LE 04 09 07"
"REPERTOIREXXX3 - MODIFIE LE 10 09 07"
"REPERTOIRE4 - MODIFIE LE 20 11 06"

Est-il possible en VB de récuperer en sortie dans un autre fichier texte la liste des repertoires qui ont été modifié durant les derniers 15 jours.... en comparant donc les derniers caractères du nom de repertoire donc "02 06 07" par exemple pour le premier de la liste à la date du jour....

Merci pour votre aide...
0
LePetitNiko Messages postés 5 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 17 octobre 2007
17 oct. 2007 à 08:32
Bonjour Jean-Marc,

   Merci à toi pour ton aide, ton script VBS approche du but, mais j'ai qq soucis en prenant l'exemple du fichier texte un peu plus bas,j'ai qq erreurs de comparaison, mais l'idée est la, le tout étant à la fin plutôt que d'avoir des msgbox, avoir la liste des repertoires dans < 42 jours un fichier txt. 

"07 01 LAVABO et VASQUES - MODIFIE LE 10 10 07"
"07 02 RECEVEURS et BAIGNOIRES - MODIFIE LE 04 09 07"
"07 03 PROTECTION DE DOUCHE - MODIFIE LE 16 11 06"
"07 04 ACC SDB ET WC - MODIFIE LE 10 09 07"
"07 05 MIROIRS ET ARMOIRES DE TOILETTE - MODIFIE LE 20 11 06"
"07 07 WC - MODIFIE LE 17 11 06"
"07 08 CUISINE - MODIFIE LE 22 11 06"
"08 01 ALIMENTATION- MODIFIE LE 28 12 06"
"08 02 ROBI DE SDB - MODIFIE LE 30 01 07"
"08 03 ROBI DE CUISINE - MODIFIE LE 30 01 07"
"08 04 HYDROMASSAGE - MODIFIE LE 05 03 07"
"08 05 TRAITEMENT DE L'EAU - MODIFIE LE 28 11 06"
0

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

Posez votre question
LePetitNiko Messages postés 5 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 17 octobre 2007
17 oct. 2007 à 08:39
Autant pour moi je rectifi, ton VBS marche très bien pour la comparaison, juste peut-on le compléter juste pour que les fichiers < 42 jours soit listé dans une fichier texte ?

En tout cas.... merci pour ce scripts, je commencais à devenir fou a force de pas trouver de solution.
0
LePetitNiko Messages postés 5 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 17 octobre 2007
17 oct. 2007 à 13:11
Rapide, propre efficace... un script qui marche au poil... vraiment un GRAND merci !!!
0
Rejoignez-nous