[débutant] comparaison chaine de caractères

Résolu
jekkdev Messages postés 8 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 21 juin 2007 - 20 juin 2007 à 17:18
jekkdev Messages postés 8 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 21 juin 2007 - 21 juin 2007 à 11:49
Bonjour,  comme je l'ai précisé dans le titre je suis débutant c'est mon deuxième script en vbs et je dois vérifier qu'une liste de noms (que j'ai sous forme d'un fichier txt : Nom_a_vérifier.txt)  figure bien dans un fichier tiré d'un export de banque de donnée privé sur Exchange.

Nom_a_vérifier.txt

Véronique TERESI
Bérengere GAILLARD
// tous les noms sont formaté de la maniere ci dessus.

ISPRIV 1 2.txt
Mailbox Last Logged on By Size (KB) Total Items Last Logon Time Last Logoff Time 
Aline TURRIN TFSFR\ydiard 902 26 19/06/2007  18:00 19/06/2007  18:00 
Arlette PERRIN TFSFR\aperrin 508 8 20/06/2007  09:58  

Je ne sais pas quelle fonctions utiliser.
il faudrait que je puisse stocker le nom et le prenom d'un user a partir de Nom_a_vérifier.txt et comparer avec les deux premier mots de chaque lignes du fichier ISPRIV 1 2.txt et marquer un . De plus comment spécifier le changement de ligne?

Si quelqu'un a des idée je suis preneur. 

Merci d'avance. 

4 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 juin 2007 à 08:48
 Bonjour à tous

En vbs, avec Fso et Dictionary, le script pourrait être:

Const strFileNom = "D:\Mes_scripts_VBFrance\Test\Nom_a_vérifier.txt"
Const strFilePriv = "D:\Mes_scripts_VBFrance\Test\ISPRIV 1 2.txt" 

Set objFso=Createobject("Scripting.FileSystemObject")
'lecture 1er fichier + création dictionnaire Nom
Set objFile=objFso.OpenTextFile(strFileNom)
Set objDicoNom = CreateObject("Scripting.Dictionary")
nbre_args = 0
Do while not objFile.AtEndOfStream
   strTablNom=Split(objFile.ReadAll , vbCr)
   For i = LBound(strTablNom) To UBound(strTablNom)
       objDicoNom.Add nbre_args, strTablNom(nbre_args) : nbre_args = nbre_args +1
   Next
Loop
objFile.Close
'lecture 2ème fichier + création dictionnaire Priv
Set objFile=objFso.OpenTextFile(strFilePriv)
Set objDicoPriv = CreateObject("Scripting.Dictionary")
nbre_args = 0
Do while not objFile.AtEndOfStream
   strTablPriv=Split(objFile.ReadAll , vbCr)
   For i = LBound(strTablPriv) To UBound(strTablPriv)
       objDicoPriv.Add nbre_args, strTablPriv(nbre_args) : nbre_args = nbre_args +1
   Next
Loop
objFile.Close
Set objFile = Nothing
Set objFso = Nothing

i = ""
'Comparaison des 2 dictionnaires
For i = 0 To objDicoNom.Count -1
    For j = 0 To UBound(objDicoPriv.Items)
        If objDicoNom(i) = Left(objDicoPriv(j), Len(objDicoNom(i))) Then
           MsgBox objDicoNom(i) &vbTab& "objDicoNom" &vbLf& _
                  Left(objDicoPriv(j), Len(objDicoNom(i))) _
                  &vbTab& "objDicoPriv",,"Nom trouvé dans les 2 fichiers"
        End if
    Next
Next

Set objDicoNom = Nothing
Set objDicoPriv = Nothing

MsgBox "FIN"

Possibilité d'utiliser ReDim, Array et Filter à la place du Dictionary.

jean-marc
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 juin 2007 à 17:21
en VBS, donc tu dois utilise FSO pour lire ton fichier.
FSO sais lire ligne par ligne...

te suffit de faire, en gros :

sBuffer = oTextStream.ReadLine
For i = 0 To Ubound(Noms)
   if Left(sBuffer, len(Noms(i)) = Noms(i) Then
        ...
   End If
Next

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
jekkdev Messages postés 8 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 21 juin 2007
21 juin 2007 à 11:23
Fantastique merci à tout le monde pour son aide. Cela fonctionne parfaitement. J'ai pus m'apercevoir que fso offrait d'énormes possibilités en regardant des docs. Il ne me reste plus que quelques optimisation a faire.

Merci Jean marc. J'espère que ca pourra aider d'autres personnes dans mon cas dans le futur.
0
jekkdev Messages postés 8 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 21 juin 2007
21 juin 2007 à 11:49
Juste pour infos après avoir manipuler un peu le script le dernier message dans la boite d'affichage ne peut pas etre fermer. Il contient ceci :

titre fenetre : Nom trouvé dans les deux fichiers
objDicoNom
objDicoPriv

et si je souhaite ecrire par exemple quelque chose comme "OK" par exemple a coté des noms qui se trouvent dans les deux dictionnaire il faut que j'utilise la fonction writeline ? il faut dans le bloc de comparaison que je récupère le noms auquel on en est et que je rajoute OK à ce moment?
0
Rejoignez-nous