IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Calcul sur fichiers Texte


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 53
    Points
    53
    Par défaut [VBA-E] Calcul sur fichiers Texte
    Bonjour,

    Je suis débutant et j'ai besoin de votre aide. Enfait, mes données sont stockées dans des fichiers dont l'extension est txt. Comment puis-je faire des calculs dans une feuille excel sur ces données dont la source est ces fichiers txt?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Comment se présentent tes données dans ton fichier texte ?
    Par ligne sans séparateur ?
    Par ligne avec séparateur ? Lequel ?
    A+

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 53
    Points
    53
    Par défaut
    Effectivement les données sont en lignes avec des entêtes dans la première ligne et le separateur utilisé est l'espace.

    A+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je ne vois pas, je peux interpréter ça de deux manières,
    Entête_Ligne1
    Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
    Entête_Ligne2
    Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Entête_Ligne1 Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
    Entête_Ligne2 Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
    Entête_Ligne3 Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
    Mais bon, dans le premier cas tu n'as pas d'espace pour l'entête et donc, tu peux tester la ligne et si elle ne contient pas d'espace, c'est l'entête ; la ligne suivante, les données de la ligne ; le nombre d'espaces + 1 le nombre de colonnes
    Sinon, le premier mot de la ligne est l'entête.
    Je prends la première hypothèse. Tu devrais pouvoir t'en sortir avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        Open "D:\LeFichier.Text" For Input As #1
        While Not EOF(1)
            Input #1, ligne
            if instr(LaLigne," ") = 0 then
               entête = LaLigne
             else
               LeTableau = Split(LaLigne) 
               'donne un tableau des valeurs de chaque colonne de la ligne
     
               'on passe dans Excel
               NoLigne = NoLigne + 1 
               For i = 1 to Ubound(LeTableau) 
                    Cells(NoLigne, i) = LeTableau(i)
               Next
            endif
        Wend
        Close #1
    Si c'est la seconde hypothèse, tu devrais pouvoir trouver tout seul
    A+

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 53
    Points
    53
    Par défaut
    En fait les données sont sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Date	Devise	Ietr	Portefeuille Etranger CT	Portefeuille Etranger MT	Placement a terme devises	Comptes etranger remu
    2/1/2007	AED	1	0	0		4
    2/1/2007	CAD	1	0	0		2
    2/1/2007	CHF	1	0	0		21
    2/1/2007	DKK	1	0	0		0do
    Merci de votre aide

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors tu as beaucoup plus simple, ouvre ton fichier.txt avec Excel, séparateur " " (espace)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Workbooks.OpenText Filename:="D:\Fichier.txt", Origin:= _
            xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
            ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=True, OtherChar:=" "
    Attention : Tu auras un pb pour la première ligne dans laquelle tu devras remplacer, dans le fichier texte (avec NotePad ou un autre éditeur de texte) les espaces présents dans les noms d'entêtes par underscore, sinon, pour "Portefeuille Etranger" tu auras deux colonnes en entête (alors qu'avec "Portefeuille_Etranger" tu n'en auras qu'une.
    Si tu utilises le code que je t'ai passé, idem pour l'entête
    Par contre, tu "peux" supprimer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if instr(LaLigne," ") = 0 then
               entête = LaLigne
             else
             ' et le endif
    mais tu n'es pas obligé, le code fonctionnera tel quel puisque toutes les lignes auront des espaces.
    Ceci dit, j'espère qu'il n'y a qu'un seul espace à la fois comme séparateur et non plusieurs...
    Tu dis
    A+

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et si le séparateur été une tabulation , ce qui semble plus logique qu'un espace...

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors, bbil, on n'est pas bien réveillé ? ça ne te ressemble pas Ici, l'indication
    Mais tu as raison, il n'y a rien de plus ressemblant dans un éditeur qu'un espace et une Tabulation...
    Finalement, merci d'avoir soulevé ce lièvre

    Edit
    Donc, si le séparateur s'avère être une tabulation, on corrige pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Workbooks.OpenText Filename:="D:\Fichier.txt", Origin:= _
            xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=False
    C'est plus court

    Re Edit
    Auquel cas, on n'a pas à modifier la ligne d'entête...

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par ouskel'n'or
    Alors, bbil, on n'est pas bien réveillé ? ça ne te ressemble pas .....
    eu pour ce qui est d'être réveillé ... moi tout ce que j'ai vu c'est que la : #5 ... c'est des tabulations et pas des espaces !!

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je pense comme toi, après réflexion. D'ailleurs 1 espace m'étonnait aussi puisque j'ai écrit
    Ceci dit, j'espère qu'il n'y a qu'un seul espace à la fois comme séparateur et non plusieurs...
    Je retire ce que j'ai dit, t'étais plus mieux réveillé que moi. Tu prends quoi comme café ?

Discussions similaires

  1. [VBA-E] Lire un fichier texte
    Par Lnmex dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/05/2006, 19h33
  2. [VB.NET]Problème de lecture et écriture sur fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 25
    Dernier message: 23/05/2006, 15h30
  3. Réponses: 11
    Dernier message: 17/05/2006, 10h48
  4. problème sur fichier texte
    Par vivelesgnous dans le forum Général Python
    Réponses: 6
    Dernier message: 26/04/2006, 20h08
  5. [VBA-E] Derniere ligne fichier texte
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 72
    Dernier message: 13/04/2006, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo