Traitement d'un fichier texte

Résolu
Messages postés
3
Date d'inscription
lundi 14 juillet 2003
Statut
Membre
Dernière intervention
22 mars 2007
-
Messages postés
18
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
22 mars 2007
-
Bonjour à tous,

Je suis nouveau sur ce forum et je ne suis pas sûr de poster au bon endroit, mais je me lance :

Je suis en train de rechercher une solution afin de traiter un fichier texte :
add reservedip 172.22.100.252 0001E6B3506E ladail014 FR/Fribourg/Daillettes 6/a-Rez/U. Lehmann
add reservedip 172.22.100.253 000E7F356FB0 ladail019 FR/Fribourg/Daillettes 6/a-Rez/M. Zahno
add reservedip 172.22.100.254 001438895F04 ladail016 FR/Fribourg/Daillettes 6/Etage 1/Bureau Compteurs
add reservedip 172.22.105.245 000E7FD8DC24 lamatr006 FR/Matran/Bat. A/Rez/Couloir
add reservedip 172.22.105.246 0060B02A3C46 inmatr001 FR/Matran/Bat. C/Rez/Construction/B. Purro
add reservedip 172.22.105.247 0001E62AC3FD lamatr001 FR/Matran/Bat. A/Rez/Secretariat
add reservedip 172.22.105.248 0030C10A58CD inmatr002 FR/Matran/Bat. C/Rez/Garage/M. Deforel
add reservedip 172.22.105.250 00143893D8ED lamatr002 FR/Matran/Bat. A/Rez/Controleur
add reservedip 172.22.105.251 001185D9BF3C lamatr003 FR/Matran/Bat. A/Rez/Couloir
add reservedip 172.22.105.252 0030C12CD898 lamatr004 FR/Matran/Bat. A/Rez/Region Centre
add reservedip 172.22.105.253 0010830DEDA9 lamatr005 FR/Matran/Bat. A/Rez/Region Centre
add reservedip 172.22.105.254 00110ABBE1B3 inmatr004 FR/Matran/Bat. A/Rez/Reprographie
add reservedip 172.22.106.234 0001E6AE8D8C labroc011 FR/Broc/Usine/Etage 2/Couloir
add reservedip 172.22.106.236 0001E6AA34A5 labroc001 FR/Broc/Usine/Rez/Centre de Conduite
add reservedip 172.22.106.238 0001E63380DA labroc002 FR/Broc/Usine/Etage 1/Couloir
add reservedip 172.22.106.239 0060B0368551 inbroc002 FR/Broc/Usine/Etage 1/Couloir
add reservedip 172.22.106.240 0060B0F192F1 labroc003 FR/Broc/Usine/Etage 2/Couloir

et mon résultat final devrait être plus ou moins ça:

[172.22.100.0]
add reservedip 172.22.100.252 0001E6B3506E ladail014 FR/Fribourg/Daillettes 6/a-Rez/U. Lehmann
add reservedip 172.22.100.253 000E7F356FB0 ladail019 FR/Fribourg/Daillettes 6/a-Rez/M. Zahno
add reservedip 172.22.100.254 001438895F04 ladail016 FR/Fribourg/Daillettes 6/Etage 1/Bureau Compteurs
[172.22.105.0]
add reservedip 172.22.105.246 0060B02A3C46 inmatr001 FR/Matran/Bat. C/Rez/Construction/B. Purro
add reservedip 172.22.105.247 0001E62AC3FD lamatr001 FR/Matran/Bat. A/Rez/Secretariat
add reservedip 172.22.105.248 0030C10A58CD inmatr002 FR/Matran/Bat. C/Rez/Garage/M. Deforel
add reservedip 172.22.105.250 00143893D8ED lamatr002 FR/Matran/Bat. A/Rez/Controleur
add reservedip 172.22.105.251 001185D9BF3C lamatr003 FR/Matran/Bat. A/Rez/Couloir
add reservedip 172.22.105.252 0030C12CD898 lamatr004 FR/Matran/Bat. A/Rez/Region Centre
add reservedip 172.22.105.253 0010830DEDA9 lamatr005 FR/Matran/Bat. A/Rez/Region Centre
add reservedip 172.22.105.254 00110ABBE1B3 inmatr004 FR/Matran/Bat. A/Rez/Reprographie

Etc...

Et c'est là que je pêche depuis quelques jours.... je ne sais pas quoi employer pour regrouper les différents subnet

Votre aide me sera précieuse !

5 réponses

Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Si cela peut t'aider, ceci te permet de récupérer l'IP:

Dim FilePath As String
Dim TaString As String
Dim SplitTaString() As String


FilePath = "C:\IP.txt"


If Dir(FilePath) <> "" Then


Open FilePath For Input As #1


While Not EOF(1)


Line Input #1, TaString
SplitTaString = Split(TaString, " ", -1, vbTextCompare)


For i = 0 To UBound(SplitTaString)


If SplitTaString(i) = Format(SplitTaString(i), "###.##.###.###") Then


'ICI ON A RECONNU L'IP


End If


Next


Wend


Close #1


End If


End Sub

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Messages postés
3
Date d'inscription
lundi 14 juillet 2003
Statut
Membre
Dernière intervention
22 mars 2007

Une lumière m'a écalairé

Je créé un fichier par subnet IP, après je pourrais ouvrir fichier par fichier et faire un append dans un fichier contenant toutes les infos.

En tout cas merci !

    Set TXT_DCHP_TRI = FSO.OpenTextFile(StrDHCPConf, ForReading, True)
    While Not TXT_DCHP_TRI.AtEndOfStream
        strLine = TXT_DCHP_TRI.ReadLine
        StrTemp = Mid(strLine, 16)
        StrIP = Mid(StrTemp, 1, InStr(StrTemp, " ") - 1)
        arrTemp = Split(StrIP, ".")
        StrSubnet = arrTemp (0) & "." & arrTemp (1) & "." & arrTemp (2) & ".0"
       
        If FSO.FileExists(StrFolder & StrSubnet & ".txt") = False Then
            Set TXT_TEMP = FSO.CreateTextFile((StrFolder & StrSubnet & ".txt"), True)
            TXT_TEMP.WriteLine "[" & StrSubnet & "]"
        Else
            Set TXT_TEMP = FSO.OpenTextFile((StrFolder & StrSubnet & ".txt"), ForAppending)
        End If
        TXT_TEMP.WriteLine strLine
        TXT_TEMP.Close
    Wend
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Salut, déjà est ce que tu sais lire et extraire les données d'un fichier text?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Messages postés
3
Date d'inscription
lundi 14 juillet 2003
Statut
Membre
Dernière intervention
22 mars 2007

Oui ça c'est bon. J'arrive à parcourir le fichiers, ressortir le subnet, etc. Je pense qu'un tableau fera l'affaire mais c'est là mon gros manque...
Messages postés
18
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
22 mars 2007

Bonjour,

Tu peux procéder ainsi :

1) Tu ouvres ton fichier,
2) Tu lis une ligne
3) Dans cette ligne tu isole l'adresse IP
4) Tu mets le dernier octect de l'IP à 0 : Tu as le groupe pour l'IP de la ligne
5) Tu regardes, si tu as déjà trouvé ce groupe. Si non, tu rajoutes ce nouveau groupe à la liste des groupes.
6) Tu associes l'indice de ce groupe au données de la la ligne.
7) Tu recommences à l'étape 2, jusqu'à la lecture de toutes les lignes.
8) Tu peux femer ton fichier

9) Tu as maintenant dans des tableaux les groupes d'IP et les données des lignes, le tout associé via un indice.
10) Si tu veux, tu peux, trier les groupes d'IP par ordre croissant en faisant suivre les indices en conséquence.
11) Tu n'as plus qu'à écrire ton fichier de sortie : Tu crés et ouvre ce fichier
12) Tu prends le 1er groupe d'IP, tu l'écris dans le fichier entre []
13) Tu parcours les lignes de données et si elle possède l'indice du groupe d'IP en cours, tu écrit la ligne dans le fichier.
14) Tu refais 13) tant qu'il reste des lignes de ce groupe d'IP ou que tu n'ai pas atteint le fin du tableau

15) Tu passes au groupe d'IP suivante et recommence en 13.
16) Quand tu as passé tous les groupes d'IP, tu as fini, plus qu'à fermer le fichier.

Les tableaux à utiliser :
Rmq: Je suppose que tu ne dois pas avoir plus de 1000 lignes. Si très gros fichier, éventuellement faire autrement pour ne pas tout mettre en mémoire et ne plus avoir cette limitation.

Type TypeTableau
Text as string ' - Contiendra les lignes complètes -
Indice as integer ' - L'indice associé aux lignes -
End type
Dim Ligne (0 to 1000) As TypeTableau

et le tableau des groupes d'IP :
GroupeIP(0 to 1000) as String '- Contient la valeur du groupe d'IP

GroupeIP(0) contiendra : "[172.22.100.0]"
Ligne(NuméroLigne).Text : contiendra la copie de la ligne NuméroLigne
Ligne(NuméroLigne).Indice : contiendra le numéro de l'indice de GroupeIP associé à cette ligne

Ligne(0).Text : "add reservedip 172.22.100.252 0001E6B3506E ladail014 FR/Fribourg/Daillettes 6/a-Rez/U. Lehmann"
Ligne(0).Indice : 0 car GroupeIP(0) = "[172.22.100.0]", du même groupe d'IP

Voilà, A+