comparaison de 2 fichiers txt

Le
Lupis
Bonjour,
je souhaite comparer le contenu de deux fichiers.txt
existant sur un lecteur, et incrmenter une variable
numrique en cas de diffrence. Je m'y perd un peu avec
les instruction compare.
Merci d'avance
;o)
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
le_troll
Le #14621251
Bonjour, voici un exemple,
Dim VarFic1 As String
Dim VarFic2 As String
Dim resultat As Byte
Dim difference As Long
'
difference = 0
'
assignation 2 prt + 2 ouvertures fics + 2 lecture fic dans var VarFic1 et
VarFic2
'
resultat = StrComp(VarFic1, VarFic2, 1)
If resultat <> 0 Then difference = difference + 1
'
MsgBox difference
--
Merci, @+, bye, Joe :
----------------------------------------------------------
Avec une hache, celui qui tient le manche a toujours raison.
----------------------------------------------------------


"Lupis" 45cc01c3ff6f$ecf02640$
Bonjour,
je souhaite comparer le contenu de deux fichiers.txt
existant sur un lecteur, et incrémenter une variable
numérique en cas de différence. Je m'y perd un peu avec
les instruction compare.
Merci d'avance
;o)
ng
Le #14621211
Salut,

Veux tu faire la comparaison ligne par ligne ? Octet par octet (Êractère)
?

Voici une solution ligne à ligne :


Private Sub Form_Load()
Dim k As Integer, sBuff As String
Dim tblLignes() As String, tblLignes2() As String, tblTemp() As String
Dim i As Integer, lTotDiff As Long
'ouverture fichier 1
k = FreeFile
Open "C:Documents and SettingsngBureau1.txt" For Binary As #k
sBuff = Space$(LOF(k))
Get #k, , sBuff
Close #k
tblLignes = Split(sBuff & vbCrLf, vbCrLf, , vbTextCompare)

'ouverture fichier 2
k = FreeFile
Open "C:Documents and SettingsngBureau2.txt" For Binary As #k
sBuff = Space$(LOF(k))
Get #k, , sBuff
Close #k
tblLignes2 = Split(sBuff & vbCrLf, vbCrLf, , vbTextCompare)

sBuff = ""

If UBound(tblLignes2) > UBound(tblLignes) Then
'on s'arrange pr que tblLignes soit tjrs le plus grand
tblTemp = tblLignes2
tblLignes2 = tblLignes
tblLignes = tblTemp
Erase tblTemp
End If

For i = 0 To UBound(tblLignes)
If i > UBound(tblLignes2) Then
'hors imite donc diff
lTotDiff = lTotDiff + 1
Else
If tblLignes(i) <> tblLignes2(i) Then lTotDiff = lTotDiff + 1
End If
Next

MsgBox lTotDiff & " différence(s) trouvée(s) !", vbInformation

Erase tblLignes
Erase tblLignes2
End Sub




Faisable aussi à coup de Line Input, mais c'est plus lent.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
"Lupis" 45cc01c3ff6f$ecf02640$
Bonjour,
je souhaite comparer le contenu de deux fichiers.txt
existant sur un lecteur, et incrémenter une variable
numérique en cas de différence. Je m'y perd un peu avec
les instruction compare.
Merci d'avance
;o)
lupis
Le #14616951
Merci ça m'a bien aidé et j'ai pu terminer mon
programme!!!
ps: avec un flingue celui qui tient le manche de la hache
se calme. :o)
-----Message d'origine-----
Bonjour, voici un exemple,
Dim VarFic1 As String
Dim VarFic2 As String
Dim resultat As Byte
Dim difference As Long
'
difference = 0
'
assignation 2 prt + 2 ouvertures fics + 2 lecture fic


dans var VarFic1 et
VarFic2
'
resultat = StrComp(VarFic1, VarFic2, 1)
If resultat <> 0 Then difference = difference + 1
'
MsgBox difference
--
Merci, @+, bye, Joe :
----------------------------------------------------------
Avec une hache, celui qui tient le manche a toujours


raison.
----------------------------------------------------------


lupis
Le #14616941
Dans un premier temps une comparaison grossiere me suffit,
mais vu que j'ignorais la procédure pour une comp. ligne
par ligne ton prog va bien m'aider
Merci beaucoup!

-----Message d'origine-----
Salut,

Veux tu faire la comparaison ligne par ligne ? Octet par


octet (ractère)
?

Voici une solution ligne à ligne :


Private Sub Form_Load()
Dim k As Integer, sBuff As String
Dim tblLignes() As String, tblLignes2() As String, tblTemp


() As String
Dim i As Integer, lTotDiff As Long
'ouverture fichier 1
k = FreeFile
Open "C:Documents and SettingsngBureau1.txt" For


Binary As #k
sBuff = Space$(LOF(k))
Get #k, , sBuff
Close #k
tblLignes = Split(sBuff & vbCrLf, vbCrLf, , vbTextCompare)

'ouverture fichier 2
k = FreeFile
Open "C:Documents and SettingsngBureau2.txt" For


Binary As #k
sBuff = Space$(LOF(k))
Get #k, , sBuff
Close #k
tblLignes2 = Split(sBuff & vbCrLf, vbCrLf, ,


vbTextCompare)

sBuff = ""

If UBound(tblLignes2) > UBound(tblLignes) Then
'on s'arrange pr que tblLignes soit tjrs le plus grand
tblTemp = tblLignes2
tblLignes2 = tblLignes
tblLignes = tblTemp
Erase tblTemp
End If

For i = 0 To UBound(tblLignes)
If i > UBound(tblLignes2) Then
'hors imite donc diff
lTotDiff = lTotDiff + 1
Else
If tblLignes(i) <> tblLignes2(i) Then lTotDiff =


lTotDiff + 1
End If
Next

MsgBox lTotDiff & " différence(s) trouvée(s) !",


vbInformation

Erase tblLignes
Erase tblLignes2
End Sub




Faisable aussi à coup de Line Input, mais c'est plus lent.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
.



ng
Le #14612961
ReSalut,

Ok, tu noteras que mon code est case sensitive, pour faire une comparaison
non case sensitive, 3 solutions :

Soit insérer un Option Compare Text au début de ton module
Soit changer If tblLignes(i) <> tblLignes2(i) Then en If
LCase$(LtblLignes(i)) <> LCase$(tblLignes2(i)) Then
Soit changer If tblLignes(i) <> tblLignes2(i) Then en If
StrComp(LtblLignes(i),LtblLignes2(i) , vbTextCompare)=0 Then


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

lupis
Dans un premier temps une comparaison grossiere me suffit,
mais vu que j'ignorais la procédure pour une comp. ligne
par ligne ton prog va bien m'aider
Merci beaucoup!

-----Message d'origine-----
Salut,

Veux tu faire la comparaison ligne par ligne ? Octet par octet
(Êractère) ?

Voici une solution ligne à ligne :


Private Sub Form_Load()
Dim k As Integer, sBuff As String
Dim tblLignes() As String, tblLignes2() As String, tblTemp () As
String Dim i As Integer, lTotDiff As Long
'ouverture fichier 1
k = FreeFile
Open "C:Documents and SettingsngBureau1.txt" For Binary As #k
sBuff = Space$(LOF(k))
Get #k, , sBuff
Close #k
tblLignes = Split(sBuff & vbCrLf, vbCrLf, , vbTextCompare)

'ouverture fichier 2
k = FreeFile
Open "C:Documents and SettingsngBureau2.txt" For Binary As #k
sBuff = Space$(LOF(k))
Get #k, , sBuff
Close #k
tblLignes2 = Split(sBuff & vbCrLf, vbCrLf, , vbTextCompare)

sBuff = ""

If UBound(tblLignes2) > UBound(tblLignes) Then
'on s'arrange pr que tblLignes soit tjrs le plus grand
tblTemp = tblLignes2
tblLignes2 = tblLignes
tblLignes = tblTemp
Erase tblTemp
End If

For i = 0 To UBound(tblLignes)
If i > UBound(tblLignes2) Then
'hors imite donc diff
lTotDiff = lTotDiff + 1
Else
If tblLignes(i) <> tblLignes2(i) Then lTotDiff = lTotDiff + 1
End If
Next

MsgBox lTotDiff & " différence(s) trouvée(s) !", vbInformation

Erase tblLignes
Erase tblLignes2
End Sub




Faisable aussi à coup de Line Input, mais c'est plus lent.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
.




Publicité
Poster une réponse
Anonyme