emplacement sur une ligne de texte

  • Initiateur de la discussion boby
  • Date de début
B

boby

Guest
salut tout le monde
alors voila j ai un fichier texte sans lequel il ya des colonnes. et je ne souhaite copier que le troisieme colonnes. pour l instant ma macro ouvre le texte le lit et arrive meme a copier le texte qui se trouve a un certain emplacement (celui de la 3em colonne) grace a l operateur mid(a,b) qui copie le texte sur la ligne qui est en lu entre a et (a+b). le probleme est que cette emplacement risque de bouger. c est pour cela que je souhaite trouver le code qui pourrait me trouver l enchainement d'un vide d'une suite de caracteres puis d un autre vide. si vous avez d autres idées je suis prenant
merci
 

Hervé

XLDnaute Barbatruc
bonjour boby

ce type de code récupère les données de la troisieme colonne d'un fichier txt, si les données sont bien séparées par un espace (sinon à adapter) :


Sub Bouton1_QuandClic()
Dim tablo
Dim ligne As String
Dim l As Integer

Open 'C:\\\\\\\\test.txt' For Input As #1 ' a adapter
Do While Not EOF(1)
Line
Input #1, ligne
l = l + 1
Cells(l, 1) = Split(ligne, ' ')(2)
Loop
Close #1


End Sub


salut

Message édité par: hervé, à: 03/05/2006 10:52
 
B

bobby

Guest
voila ce que je fais :

Sheets('outputs').Cells(1 + i, 1) = Split(ligne, ' ')(2)
'Sheets('outputs').Cells(1 + i, 1).Value = Mid(ligne, 24, 12)
i = i + 1

mais ca ne marche pas il dit ne pas connaitre split
que dois j faire
 

Hervé

XLDnaute Barbatruc
re

Serais-tu en xl97 ?

si oui c'est normal la méthode split n'est pas compatible avec cette version, essaye comme ceci :


Sub Bouton1_QuandClic()
Dim ligne As String
Dim l As Integer

Open 'C:\\\\\\\\test.txt' For Input As #1 ' a adapter
Do While Not EOF(1)
                Line
Input #1, ligne
                l = l + 1
                Sheets('outputs').Cells(l, 1) = extraire(ligne)
Loop
Close #1

End Sub
'_________________________________________________
Public Function extraire(t As String) As String
Dim tablo()
Dim i As Byte
Dim x As Byte

For i = 1 To Len(t)
       
If Mid(t, i, 1) = ' ' Then
                x = x + 1
               
ReDim Preserve tablo(1 To x)
                tablo(x) = i
       
End If
Next i

extraire = Mid(t, tablo(2) + 1, tablo(3) - tablo(2))
End Function


salut
 

Hervé

XLDnaute Barbatruc
re

il me semblait bien que tu t'avancais un peu en me disant que c'est magnifique. :)

ton souci doit venir du fait que tu n'as pas toujours dans ton txt le meme nombre données par ligne.

merci de me fournir un extrait significatif de ton txt.

salut
 
B

boby

Guest
voici une partie du texte mais il y a plusieurs chapitres. je ne pouvais pas tout le mettre il esst trop long



E L E M E N T O U T P U T





THE FOLLOWING TABLE IS PRINTED AT THE INTEGRATION POINTS FOR ELEMENT TYPE PIPE31H AND ELEMENT
SET EL_PIPE

ELEMENT PT FOOT- ESF1
NOTE

1 1 -3.9287E+05
2 1 -3.9287E+05
3 1 -3.9287E+05
4 1 -3.9287E+05
5 1 -3.9287E+05
6 1 -3.9287E+05
7 1 -3.9287E+05
8 1 -3.9287E+05
9 1 -3.9287E+05
10 1 -3.9287E+05
 

Hervé

XLDnaute Barbatruc
re

si tu veux recuperer les -3.9287E+05

essayes ceci :


Sub Bouton1_QuandClic()
Dim ligne As String
Dim l As Integer

Open 'C:\\\\\\\\test.txt' For Input As #1 ' a adapter
Do While Not EOF(1)
        Line
Input #1, ligne
       
If IsNumeric(Mid(ligne, 1, 1)) Then
                l = l + 1
                Sheets('outputs').Cells(l, 1) = extraire(ligne)
       
End If
Loop
Close #1

End Sub
'_________________________________________________
Public Function extraire(t As String) As String
Dim tablo()
Dim i As Byte

For i = 1 To Len(t)
       
If Mid(t, i, 1) = ' ' Then
                x = x + 1
               
ReDim Preserve tablo(1 To x)
                tablo(x) = i
       
End If
Next i

extraire = Mid(t, tablo(2) + 1)
End Function


mais c'est en aveugle encore une fois.

salut
 

Hervé

XLDnaute Barbatruc
re

ca va m'aider :' mais ca ne marche pas. sorry' :)

ci-joint un zip comprenant un .xls et un .txt, dézippe les deux fichiers dans le meme repertoire, ouvre le .xls, et appuis sur le bouton.

si tu n'a pas de résultat en colonne A, merci de m'indiquer le résultat que tu as, sinon le message d'erreur.

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

Pièces jointes

  • test_20060504132502.zip
    9.4 KB · Affichages: 16

Discussions similaires

Réponses
4
Affichages
218

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 611
dernier inscrit
sebboes