Comparaison de fichiers txt + ecriture fichier txt

Bonjour,

Je me permets d'ouvrir un sujet car je rencontre des difficultés dans la création d'une macro.

Je souhaite réaliser une macro qui compare 2 fichiers .txt qui comporte des listes d'ordinateurs,serveurs avec un nom unique mélangé avec d'autres informations. Mon but est de trouver si il y a des noms d'ordinateurs qui ne sont pas dans les 2 fichiers et, si c'est le cas, rajouter les noms des ordinateurs dans le fichier où il sont manquants.En gros si jamais il y a des noms de pc dans le premier fichier qui ne sont pas dans le deuxième fichier alors il me faut rajouter ces noms dans le deuxième fichier.(je sais pas si je suis assez clair ^^')

Pour le moment j'ai effectué le code suivant :

 

Public Function ExtraireChaineDelimitee(ChaineSource As String, Optional LimiteAvant As String = "", Optional LimiteApres As String = "")

On Error GoTo FunctionErreur
If InStr(1, ChaineSource, LimiteAvant) = 0 Then
    ExtraireChaineDelimitee = CVErr(xlErrNA)
    Exit Function
Else
    ExtraitPositionDebut = InStr(1, ChaineSource, LimiteAvant) + Len(LimiteAvant)
End If

If LimiteApres = "" Then
    ExtraitPositionFin = Len(ChaineSource)
Else
    ExtraitPositionFin = InStr(1, ChaineSource, LimiteApres) - 1
End If
ExtraireChaineDelimitee = Mid(ChaineSource, ExtraitPositionDebut, ExtraitPositionFin - ExtraitPositionDebut + 1)
Exit Function

FunctionErreur:
    ExtraireChaineDelimitee = CVErr(xlErrNA)
    'ExtraireChaineDelimitee = ""
End Function

Sub ExempleExtractionDeChaine()

Dim LimiteGauche As String
Dim LimiteDroite As String
Dim intFic As Integer
Dim strLigne As String
Dim ligne As String
Dim motcompare As String
Dim intfic2 As Integer
Dim TestEnsemble As Long
Dim ligne2 As String

LimiteGauche = "aa"
LimiteDroite = "bb"

intFic = FreeFile
Open "C:\" For Input As intFic
While Not EOF(intFic)
    Line Input #intFic, strLigne
    ligne = strLigne
    motcompare = ExtraireChaineDelimitee(ligne, LimiteGauche, LimiteDroite)

    intfic2 = FreeFile
    Open "C:\" For Input As intfic2
    While Not EOF(intfic2)
         Line Input #intfic2, strligne1
         ligne2 = strligne1
         TestEnsemble = InStr(1,ligne2,motcompare,1)

         If TestEsemble = 0 Then
         num = FreeFile
         Close intfic2
            'Ouvre en écriture 
             Open "C:\" For Append As #5
             Print #1, motcompare
            'Fermeture
            Close #5
        End If

      Wend

Wend
Close intFic
Close intfic2

End Sub

Il est fort possible que mon code vous sortes par les yeux ( je suis débutant en vba).

La fonction qui trouve une chaine de caractère entre 2 bornes semble fonctionner, c'est surtout la partie sur l'ouverture et l’écriture sur les fichiers texte qui me pose problème car je dois ouvrir un fichier en lecture puis en écriture. J'ai actuellement une erreur sur l'ouverture de mon 2 eme fichier, erreur qui m'indique que le fichier est déjà ouvert.

En vous remerciant par avance de votre aide !

Rechercher des sujets similaires à "comparaison fichiers txt ecriture fichier"