cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
27
30 janv. 2008 à 21:21
Re,
Autres exemples pour comparer deux fichiers .txt:
version Array:
Option ExplicitConst ForReading 1, ForWriting 2, ForAppending = 8
Dim objFso, strFicTxt1, strFictxt2, i
Dim arrLineFicTxt1, arrLineFicTxt2, strResult
strFicTxt1 = "C:\SCRIPTS\Fichiers\fichier1.txt"
strFictxt2 = "C:\SCRIPTS\Fichiers\fichier2.txt"
'
Set objFso = CreateObject("Scripting.FileSystemObject")
'
'Création de 2 tableaux contenant les lignes des 2 fichiers
arrLineFicTxt1 = FnReadFileTxt(strFicTxt1, strResult)
arrLineFicTxt2 = FnReadFileTxt(strFictxt2, strResult)
'Comparaison des 2 tableaux
For i = 0 To UBound(arrLineFicTxt1)
If arrLineFicTxt1(i) <> arrLineFicTxt2(i) Then
MsgBox "line" & i &vbCrLf&vbcr& _
"file1" &vbTab& arrLineFicTxt1(i) &vbCrLf&vbCr&_
"file2" &vbTab& arrLineFicTxt2(i)
End If
Next
Set objFso = Nothing
'
'=========================
Function FnReadFileTxt(strFile, strResult)
Dim objFile, arrLineFicTxt
Set objFile = objFso.OpenTextFile(strFile, ForReading)
'arrLineFicTxt est un tableau contenant toutes les lignes du .txt
arrLineFicTxt = Filter(Split(objFile.ReadAll,vbCrLf), vbNullString)
objFile.Close
Set objFile = Nothing
strResult = arrLineFicTxt
FnReadFileTxt = strResult
End function
'=========================
version Dictionary:
Option ExplicitConst ForReading 1, ForWriting 2, ForAppending = 8
Dim objFso, strFicTxt1, strFictxt2, i
Dim objDicoFile1, objDicoFile2, strResult
strFicTxt1 = "C:\SCRIPTS\Fichiers\fichier1.txt"
strFictxt2 = "C:\SCRIPTS\Fichiers\fichier2.txt"
'
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objDicoFile1 = CreateObject("Scripting.Dictionary")
Set objDicoFile2 = CreateObject("Scripting.Dictionary")
'
'Création de 2 tableaux contenant les lignes des 2 fichiers
objDicoFile1 = FnReadFileTxt(strFicTxt1, strResult)
objDicoFile2 = FnReadFileTxt(strFictxt2, strResult)
'
'Comparaison des 2 dictionnaires
i = ""
For i = 0 To UBound(objDicoFile1)
If objDicoFile1(i) <> objDicoFile2(i) Then
MsgBox "line" & i &vbCrLf&vbcr& _
"file1" &vbTab& objDicoFile1(i) &vbCrLf&vbCr&_
"file2" &vbTab& objDicoFile2(i)
End if
Next
Set objDicoFile1 = Nothing
Set objDicoFile2 = Nothing
Set objFso = Nothing
'
'=========================
Function FnReadFileTxt(strFile, strResult)
Dim objFile, objDicoFile, arrLineFile, nbre_args
'lecture fichier + création dictionnaire
Set objFile = objFso.OpenTextFile(strFile, ForReading)
Set objDicoFile = CreateObject("Scripting.Dictionary")
nbre_args = 0
Do while not objFile.AtEndOfStream
arrLineFile = Split(objFile.ReadAll , vbCr)
For i = LBound(arrLineFile) To UBound(arrLineFile)
objDicoFile.Add nbre_args, arrLineFile(nbre_args)
nbre_args = nbre_args +1
Next
Loop
objFile.Close
Set objFile = Nothing
strResult = objDicoFile.Items
FnReadFileTxt = strResult
End function
'=========================
>>> Je voudrais remplacer la fonctionnalité "Msgbox" par un envoi de mail via une passerelle smtp.
Le msgbox étant dans une boucle, il y aurait envoi d'un mail pour chaque ligne différente ???
Je suppose que ce n'est pas l'option choisie, donc pour quelle présentation du mail as-tu opté ???
(avec CDO.Message ou mailto ???, avec pièce jointe ???)
jean-marc