Importer des données d'un fichier .txt

helene51

XLDnaute Junior
Bonjour le forum et bonne année 2009 !

Après des heures de recherches je me décide à vous solliciter car je n'avance pas.

J'ai un fichier texte dont chaque ligne est de la forme suivante :
"02/01/2009 14:44:59",#1899-12-30 03:30:00#,"16970","3",#1899-12-30#,#1899-12-30#,#1899-12-30#,"84,17%","00:00","","00:00",""

Je souhaite récupérer dans excel la valeur de pourcentage enregistrée dans ce fichier texte. (ici 84,17%)

J'ai écrit quelquechose mais ça ne fonctionne pas et je ne trouve pas le problème.

Code:
NomFiche = "C:\Dossiers\9\21.txt"
   Open (NomFiche) For Input As #1
      Do
         Input #1, LDate
         Input #1, Temps1
         Input #1, nb1
         Input #1, nb2
         Input #1, tps1
         Input #1, tps2
         Input #1, tps3
         Input #1, taux
             For i = 2 To 5 ' le fichier texte a 5 lignes
                If .Cells(i, 1).Value = LDate Then 'en colonne 1 j'ai des dates qui correspondent aux dates du fichier texte
                        .Cells(i, 2).Value = taux
                End If
             Next i
         .Columns("B:B").Select
         Selection.NumberFormat = "0.00%"
      Loop While Not EOF(1)
Close #1

Le problème est que je ne récupère aucune donnée.
Je bloque vraiment, si quelqu'un a une idée je l'en remercie d'avance !
 

Larson

XLDnaute Junior
Re : Importer des données d'un fichier .txt

bonjour,

le format de Ldate provenant du fichier texte est en .... texte :)
je suppose que les dates du classeur sont en format date.

il faut un exemple des ton classeur en PJ pour voir exactement le soucis
 
Dernière édition:

helene51

XLDnaute Junior
Re : Importer des données d'un fichier .txt

Bonjour Larson,

Merci de te pencher sur mon problème.

J'ai mis en pièce jointe un exemple de mes écritures en vb et ci dessous un exemple du fichier text à traiter avec la macro.

"02/01/2009 15:50:46",#1899-12-30 07:25:00#,"13172","8",#1899-12-30 00:30:00#,#1899-12-30 00:20:00#,#1899-12-30 01:10:00#,"74%","00:00","","00:05","com1","00:00","","00:10","com2","00:00","","00:05","com3","00:10","com4","00:00","","00:15","com5","00:05","com6","00:00","","00:10","com7","com8","00:00","com9","com10","00:10",""
"30/12/2008",#1899-12-30 07:25:00#,"12629","10",#1899-12-30 00:30:00#,#1899-12-30 00:20:00#,#1899-12-30 01:25:00#,"70,94%","00:10","com1","00:00","","00:05","com2","00:00","","00:05","com3","00:20","com4","00:05","com5","00:05","com6","00:10","com7","00:00","","00:00","","00:20","com8","com9","00:05","com10","","00:00",""
"05/01/2009 08:51:17",#1899-12-30 04:00:00#,"5460","6",#1899-12-30#,#1899-12-30 00:15:00#,#1899-12-30 00:30:00#,"56,87%","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","com1","00:05","com2","00:00","","00:15","com3","00:00","","00:00","","00:00","","com4","00:10","com5","","00:00",""
"03/01/2009 08:55:20",#1899-12-30 06:50:00#,"12854","9",#1899-12-30 00:30:00#,#1899-12-30 00:20:00#,#1899-12-30 00:40:00#,"78,37%","00:00","","00:00","","00:00","","00:00","com1","00:00","","00:25","com2","00:05","com3","00:00","","00:00","","00:00","","00:00","","00:00","","com4","00:10","com5","","00:00",""
"02/01/2009 14:44:59",#1899-12-30 03:30:00#,"16970","3",#1899-12-30#,#1899-12-30#,#1899-12-30#,"84,17%","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","","00:00","","","00:00","","","00:00",""

Je n'arrive pas à ajouter le taux dans la colonne 2.

Merci pour ton aide.
 

Pièces jointes

  • test import données txt.xls
    30 KB · Affichages: 104

helene51

XLDnaute Junior
Re : Importer des données d'un fichier .txt

Bonjour Hasco,

J'ai essayé ce que tu as marqué mais ça ne change rien.
Il n'y a toujours rien d'affiché dans mes cellules de la colonne B.

Cependant, est-ce que je peux toujours écrire les input comme tu l'as marqué et non par succession ? Dans mon code ces lignes reviennent souvent et ça éclaircirait beaucoup les choses.

Est-ce valable aussi pour les Append ou les output ?

Merci.
 

Larson

XLDnaute Junior
Re : Importer des données d'un fichier .txt

il y a beaucoup de champs derriere le % que tu souhaite recuperer.
30 si j'ai bien compté.
Ton input doit comporter autant de variable qu'il y a de champs par ligne il me semble.

Note : je ne suis pas un specialiste, je connais le 'input' sans jamais l'avoir utilisé en fait :)
 

helene51

XLDnaute Junior
Re : Importer des données d'un fichier .txt

J'avais un doute la dessus. Le problème c'est que derrière mon taux je n'ai pas toujours autant de variable.
Jusqu'au taux c'est toujours la même chose mais après il peut y en avoir 26 comme 30.

Est-ce une contrainte ?
 

Larson

XLDnaute Junior
Re : Importer des données d'un fichier .txt

d'apres ce que je viens d'essayer, il semblerai que oui.
Si tu defini ton input avec 26 champs et que ta ligne de texte en comprend 30, le second passage dans le loop prendra le 27eme comme le 1er champs (c'est a dire que LDate prendra la valeur du 27eme champs) et tout se decale à chaque tour !
 
G

Guest

Guest
Re : Importer des données d'un fichier .txt

Re Hélène,

Avec les éléments fournis, je suis arrivé à quelque chose d'acceptable.
La méthode choisie explose la ligne dans un tableau (tbl).
Les éléments sont récupérés dans ce tableau.

Il y a des conversions de date à faire dans le fichier texte puisque certaines comportent les heures.

Vois si cela te convient.

Je te conseille de lire l'aide excel ou de faire des recherches sur le forum en ce qui concerne les Input , Line Input, Put, Write etc....

A+
 

helene51

XLDnaute Junior
Re : Importer des données d'un fichier .txt

Bonjour le forum, Larson, Hasco,

Dans ton dernier message Hasco tu me dis avoir fais un essai concluant mais tu n'as pas mis de fichier en pièce jointe ... est-ce normal ?

Je vais me plonger dans mes recherches pour les Input , Line Input, Put, Write etc....

Merci beaucoup.
 
G

Guest

Guest
Re : Importer des données d'un fichier .txt

bonjour Helène,

Désolé pour cet oubli.

voici la macro, commentée
Code:
Private Sub Import_données()
    Dim xlLigne As Long
    Dim txtLigne As String
    Dim LDate As String
    Dim c As Range    'Cellule de boucle                                
    Dim tbl               'Tableau des donnée de ligne
    ' Création de la feuille de données
    Sheets(1).Name = "Tableau données"
    With Sheets(1)
        .Cells(1, 1).Value = "Date"
        .Cells(1, 2).Value = "taux"
        On Error Resume Next
        NomFiche = Application.GetOpenFilename("text files (*.txt), *.txt")
        Open (NomFiche) For Input As #1
        Do
            Line Input #1, txtLigne
            'ôter les guillemets [chr(34)] de la ligne
            txtLigne = Replace(txtLigne, Chr(34), "")
            'Mise en tableau de la ligne, séparateur de champ: virgule
            tbl = Split(txtLigne, ",")
            'Optention de la date
            LDate = tbl(0)
            'Si l'heure est incluse, L'ôter (marquée par la présence des deux-point
            If InStr(1, LDate, ":") > 0 Then
                'Récupération de la date (position du premier espace trouvé -1)
                LDate = Left(LDate, InStr(1, LDate, " ") - 1)
            End If
            'Mise au format pour recherche
            LDate = Format(CDbl(LDate), "dd/mm/yyyy")
            For Each c In Sheets("Tableau données").Range("A:A")
                If IsEmpty(c) Then Exit For
                If c.Text = LDate Then
                    With c.Offset(, 1)
                        .Value = Val(tbl(7)) / 100
                        .NumberFormat = "0.00%"
                    End With
                End If
                xlLigne = xlLigne + 1
                Set c = .Cells(xlLigne, 1)
        Next
    Loop While Not EOF(1)
    Close #1
End With
End Sub

A+
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 422
Membres
102 886
dernier inscrit
eurlece