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

Signaler
Messages postés
5
Date d'inscription
jeudi 28 septembre 2006
Statut
Membre
Dernière intervention
17 octobre 2007
-
LePetitNiko
Messages postés
5
Date d'inscription
jeudi 28 septembre 2006
Statut
Membre
Dernière intervention
17 octobre 2007
-
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

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
25
 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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
25
 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
Messages postés
5
Date d'inscription
jeudi 28 septembre 2006
Statut
Membre
Dernière intervention
17 octobre 2007

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...
Messages postés
5
Date d'inscription
jeudi 28 septembre 2006
Statut
Membre
Dernière intervention
17 octobre 2007

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"
Messages postés
5
Date d'inscription
jeudi 28 septembre 2006
Statut
Membre
Dernière intervention
17 octobre 2007

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.
Messages postés
5
Date d'inscription
jeudi 28 septembre 2006
Statut
Membre
Dernière intervention
17 octobre 2007

Rapide, propre efficace... un script qui marche au poil... vraiment un GRAND merci !!!