trier un fichier txt par vba

sylv900

XLDnaute Occasionnel
salut à tous,
j'ai une colle à vous poser :
j'ai un fichier entree.txt de plus de 65000 lignes (donc on ne peut pas passer par une feuille xls) et je doit obtenir le fichier sortie.txt.
ci-joint des extrait de fichier (normalement, il y a plus de 1000 noeuds répété une centaine de fois).
si vous avez des idée je suis preneur
merci d'avance

[file name=exemples.zip size=410]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exemples.zip[/file]
 

Pièces jointes

  • exemples.zip
    410 bytes · Affichages: 75
  • exemples.zip
    410 bytes · Affichages: 71
  • exemples.zip
    410 bytes · Affichages: 70

dg62

XLDnaute Barbatruc
Bonsoir Sylv900

ce code va copier le contenu de ton fichier TXT sur 2 colonnes
c'est un début.

Code:
Sub lireFichier()
Dim node As String
Open 'c:\\Fichier.txt' For Input As #1
Do While Not EOF(1)
Input #1, node
enr = enr + 1
Loop
Close #1

Open 'c:\\texte.txt' For Input As #1

For i = 1 To enr

If i <= 65536 Then
  Input #1, node
  Range('A' & i).Value = node
  Else
  Range('B' & i - 65536).Value = node
End If
Next i
Close #1
  
End Sub
 

dg62

XLDnaute Barbatruc
re

Deuxieme procedure : elle va compter le nombre de nombre de Node dans la colonne A et afficher les résultats en C et D.
il convient ensuite de faire la même chose pour B et d'ajouter les résultats. A moins que un pro du VBA nous propose le tout dans la même procédure. Avis aux amateurs.

Code:
Sub CompteNode()

Dim j As Integer
Dim cpt, occ, x, nblignes, nbocc As Long

Range('A:A'Â'Â').Select
Selection.Sort Key1:=Range('A1'Â'Â'), Order1:=xlAscending

' Comptage du nombre d'occurences
Range('A1'Â'Â').Select
nblignes = Cells(Range('A:A'Â'Â').Count, ActiveCell.Column).End(xlUp).Row


x = 1
j = 2
cpt = nblignes
Range('D1'Â'Â').Value = 'Node'
Range('E1'Â'Â').Value = 'Nombre'
While cpt > 0
    occ = Range('A' & x).Value
    nbocc = Application.CountIf(Range('A:A'Â'Â'), occ)
           
            Range('D' & j).Value = occ
            Range('E' & j).Value = nbocc
            j = j + 1
            
            x = x + nbocc
            cpt = cpt - nbocc
     
    
Wend

End Sub

Sub CompteNodeB()
' de la colonne B
Dim j As Integer
Dim cpt, occ, x, nblignes, nbocc As Long

Range('B:B').Select
Selection.Sort Key1:=Range('B1'), Order1:=xlAscending

' Comptage du nombre d'occurences
Range('B1').Select
nblignes = Cells(Range('B:B').Count, ActiveCell.Column).End(xlUp).Row
x = 1
j = 2
cpt = nblignes
Range('F1').Value = 'Node'
Range('G1').Value = 'Nombre'
While cpt > 0
    occ = Range('B' & x).Value
    nbocc = Application.CountIf(Range('B:B'), occ)
           
            Range('F' & j).Value = occ
            Range('G' & j).Value = nbocc
            j = j + 1
            
            x = x + nbocc
            cpt = cpt - nbocc
     
    
Wend
End Sub

Message édité par: dg62, à: 20/04/2005 19:57

Message édité par: dg62, à: 20/04/2005 22:46
 

Discussions similaires

Statistiques des forums

Discussions
312 089
Messages
2 085 206
Membres
102 820
dernier inscrit
SIEG68