Une forme et 2 boutons de commande
Private Sub Command1_Click()
'juste pour constituer 2 fhiers de travail (ne lancer donc q'une fois)
Randomize
On Error Resume Next
f1 = "d:\testA.txt" '| je ne fais ici que
f2 = "d:\testB.txt" '| créer 2 petits fichiers
Kill "d:\testA.txt" '| qui vont me servir à tester
Kill "d:\testB.txt"
Open f1 For Output As #2
Open f2 For Output As #1
For i = 1 To 7
Print #1, i & " " & Int((3 * Rnd) + 1)
Next
For i = 1 To 10
Print #2, i & " " & Int((3 * Rnd) + 1)
Next
Close #1
Close #2
End Sub
Private Sub Command2_Click()
On Error Resume Next 'hélàs inévitable car un fichier risque d'avoir plus de lignes que l'autre
Dim f1 As String, f2 As String, f3 As String, nb As Integer, couic As Boolean
Dim du1 As String, du2 As String, toto As String
f1 = "d:\testA.txt" '| les deux fichiers à
f2 = "d:\testB.txt" '| comparer
f3 = "d:\RESUL.txt" ' le fichier d'enregistrement des résultats de la comparason
Kill f3
DoEvents
Open f1 For Input As #1
Open f2 For Input As #2
Open f3 For Output As #3
nb = 1
Print #3, "lignes communes différente entre " & f1 & " et " & f2
While Not (EOF(2) And EOF(1))
On Error Resume Next
du1 = "": du2 = ""
Line Input #2, du2
Line Input #1, du1
If Not couic Then
Select Case du1 & du2
Case Is = du1
toto = f1
couic = True
Case Is = du2
toto = f2
couic = True
End Select
If couic Then Print #3, "lignes présentes uniquement dans " & toto
End If
If du1 <> du2 Then
If Not couic Then
Print #3, "ligne " & nb & " disant " & du1 & " dans " & f1; " et " & du2 & " dans " & f2
Else
Print #3, "ligne " & nb & " disant " & du1 & du2
End If
End If
nb = nb + 1
Wend
Close #1
Close #2
Close #3
End Sub