jekkdev
Messages postés8Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention21 juin 2007
-
20 juin 2007 à 17:18
jekkdev
Messages postés8Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention21 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?
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.
jekkdev
Messages postés8Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention21 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.
jekkdev
Messages postés8Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention21 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?