Set fso = CreateObject("Scripting.FileSystemObject")
Set ObjTextStream = Fso.OpenTextFile(Path & Fic1, 1)
Do While Not ObjTextStream.AtEndOfStream
strtmp1 = split(ObjTextStream.ReadLine, vbLf)
For i = 0 to Ubound(strtmp1)
imax = imax + 1
ReDim Preserve Tableau1(1, imax)
Tableau1(1, imax) = strtmp1(i)
Next
Loop
ObjTextStream.Close
imax = 0
Set ObjTextStream = Fso.OpenTextFile(Path & Fic2, 1)
Do While Not ObjTextStream.AtEndOfStream
strtmp2 = split(ObjTextStream.ReadLine, vbLf)
For i = 0 to Ubound(strtmp2)
imax = imax + 1
ReDim Preserve Tableau2(1, imax)
Tableau2(1, imax) = strtmp2(i)
Next
Loop
ObjTextStream.Close
For r = 1 To imax
If Tableau1(1, r) <> Tableau2(1, r) Then
MsgBox "La ligne " & r & " est différente entre les 2 fichiers" &vbCrLf&vbCrLf&_
"1er tableau " & vbCrLf& Tableau1(1, r) &vbCrLf&vbCrLf&_
"2ème tableau " & vbCrLf& Tableau2(1, r)
End If
Next
Set Fso = Nothing
Set ObjTextStream = Nothing
Flamandier
Messages postés9Date d'inscriptionvendredi 24 février 2006StatutMembreDernière intervention 5 avril 2007 27 oct. 2006 à 16:13
Merci pour cette exemple.
Apres quelques recherches, j'ai opté temporairement pour ceci:
Public Sub Comparefiles(Outputfilename As String, ReffileName As String)
Dim f%, g%, StrOutPut$, StrRef$
f = FreeFile
Open Outputfilename For Input As #f
StrOutPut = Input(LOF(f), #f)
Close #f
g = FreeFile
Open ReffileName For Input As #g
StrRef = Input(LOF(g), #g)
Close #g
If StrOutPut = StrRef Then
MsgBox ("Identical")
Else
MsgBox ("Different")
End If
End Sub
Mais ca ne me satisfait qu'a moitie. J'ai des doutes sur la fiabilité de cette comaraison de 2 strings.
Je voudrais utiliser des outils "reconnus" comme Windiff, par exemple, ou "diff" utilisé sous UNIX.
L'avantage de "diff" sous UNIX ,c'est qu'il renvoit un code retour : 1 si les fichiers sont differents, 0 s'ils sont identiques.
Je ne retrouve pas cette fonctionalité sous Windows, et pire , je ne saurais meme pas recupere le code retour...
Voilà, si vous avez d'autres idéees, je vous remercie.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 27 oct. 2006 à 21:04
Re,
Tester la différence d'octets entre les 2 fichiers , quelque soit leur extension,
est une proposition, mais non fiable.
Call ShowFolderSize ("D:\test.txt","D:\test1.txt")
Function ShowFolderSize(fic1, fic2)
Dim fso, f1, f2, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile(fic1)
Set f2 = fso.GetFile(fic2)
s = UCase(f1.Name) & " occupe " & f1.size & " octets." &vbCrLf&_
UCase(f2.Name) & " occupe " & f2.size & " octets."
ShowFolderSize = s
MsgBox ShowFolderSize
Set fso = Nothing
Set f1 = Nothing
Set f2 = Nothing
End Function