[débutant] comparaison chaine de caractères [Résolu]

Signaler
Messages postés
8
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
21 juin 2007
-
Messages postés
8
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
21 juin 2007
-
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

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
25
 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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
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
Messages postés
8
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
21 juin 2007

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.
Messages postés
8
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
21 juin 2007

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?