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
re

tu les donnes aux comptes gouttes les infos.


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

Open ActiveWorkbook.Path & '\\\\\\\\' & 'test.txt' For Input As #1 ' a adapter
Do While Not EOF(1)
                Line
Input #1, ligne
               
If IsNumeric(Mid(ligne, 2, 1)) Then
                                l = l + 1
                                Sheets('outputs').Cells(l, 1) = extraire(LTrim(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

La suite de l'aventure : boby et hervé font du vba :)

salut
 

Hervé

XLDnaute Barbatruc
re

ce code fonctionne chez moi, a toi de le tester;


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

Open ActiveWorkbook.Path & '\\\\\\\\donnée\\\\\\\\' & 'test.dat' For Input As #1 ' a adapter
Do While Not EOF(1)
        Line
Input #1, ligne
        ligne = Application.Trim(ligne)
       
If IsNumeric(Mid(ligne, 2, 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
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)
End Function

salut
 

Discussions similaires

Réponses
4
Affichages
226

Statistiques des forums

Discussions
312 370
Messages
2 087 689
Membres
103 639
dernier inscrit
NIEMASAFI