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 :

séparer séries de valeurs d'un fichier .txt


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut séparer séries de valeurs d'un fichier .txt
    Bonjour,

    J'ai un fichier .txt ci-joint en exemple (format réduit en nombre de valeurs). Deux séries de valeurs en colonnes se présentent ainsi : x(entier positif),y(décimal négatif ou positif). Quand je fais un copier coller sur Excel, les valeurs sont forcément misent sur une colonne.

    Avec un code VB, je voudrais pouvoir mettre X et Y chacun dans une colonne.

    PS : y a t-il une fonction calcul d'aire et d'ajustement (fit) sur Excel?

    Merci à Vous!

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ci dessous une macro d'import du fichier
    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
    18
    19
    20
    21
    22
    23
    Sub Import()
     
    Dim strLigne As String
    Dim str() As String
    Dim i As Long
     
    i = 1
     
    Open "c:\exemple.txt" For Input As #1
     
    Do While Not EOF(1)
        Line Input #1, strLigne
        str = Split(strLigne, ",")
     
        Range("A" & i).Value = str(0)
        Range("B" & i).Value = str(1) & "," & str(2)
     
        i = i + 1
    Loop
     
    Close #1
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut
    Salut,

    Alors le programme lis bien toute la 1ère colonne mais la 2ième pour les nombres supérieures à 1 (il prend pas en compte la virgule du coup je me retrouve avec des nombres très très grand).

    Fichier c-joint.

    Merci,

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Remplace la ligne 16 par celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B" & i).Value = str(1) & "." & str(2)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut
    Bonjour,

    ça marche! par contre à chaque fois il m'indique "erreur d'exécution '9' : L'indice n'appartient pas à la sélection"

    Autre chose, je voudrais non pas tracer la courbe à partir du premier point mais inverser et commencer par le plus grand en abscisses. Est-il possible de générer directement le fichier avec les données inversées? ou peut-on faire ça directement via la courbe?


    Merci les spécialistes!

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code affiné pour tenir compte de tous les case de figures
    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
    18
    19
    20
    21
    22
    23
    24
    25
    Sub Import()
    Dim strLigne As String, Str() As String, Y As String
    Dim n As Integer
    Dim i As Long
     
    Open "C:\Users\user\Desktop\exemple.txt" For Input As #1
     
    With Worksheets("Feuil1")                          'à adapter
        Do While Not EOF(1)
            Line Input #1, strLigne
            Str = Split(strLigne, ",")
            n = UBound(Str)
            If n > 0 Then
                i = i + 1
                .Range("A" & i).Value = Str(0)
                Y = Str(1)
                If n > 1 Then Y = Y & "." & Str(2)
                .Range("B" & i).Value = Val(Y)
            End If
        Loop
        Close #1
        'trier sur la colonne A
        .Range("A1:B" & i).Sort key1:=.Range("A1"), Order1:=xlDescending, Header:=xlNo
    End With
    End Sub
    J'ai ajouté une ligne de tri des données en ordre décroissant mais pour la 2ème question, il suffit de choisir sur les propriétés de l'axe des abscisses: Valeurs en ordre inverse

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut
    OK merci! ça marche bien!

    Par contre pour les questions d'avant, savoir si c'est possible de modéliser la courbes via des fonctions (une sinusoïde par exemple) ou code VB (ajustement fitting) ? ou est-ce possible directement sur excel ?

    Merci.

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu pourra choisir une courbe de tendance sur ton graphique, pour ton cas, la plus proche est un polynôme d'ordre 6
    y = -3E-18x6 + 3E-14x5 - 1E-10x4 + 3E-07x3 - 0.0003x2 + 0.1504x - 25.123

  9. #9
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Tu pourra choisir une courbe de tendance sur ton graphique, pour ton cas, la plus proche est un polynôme d'ordre 6
    Citation:
    y = -3E-18x6 + 3E-14x5 - 1E-10x4 + 3E-07x3 - 0.0003x2 + 0.1504x - 25.123
    je suis complètement largué

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut
    Oui, mais tout le signal ne m'intéresse pas.

    Il y a des pics après zoom ou une courbe d'ajustement de type sinusoïde irait bien. Je voulais savoir s'il était possible via un vode VB et une fonction fit (ajustement) en fonction de l'intervalle en X de modéliser le signal brute par une sinusoïde par exemple ? Puis calculer l'aire sous la sinusoïde générer?

    Dans le fichier ci-joint : je voudrais générer 2 sinusoïde (il y a 2 pics).

    Je suis pas spécialiste de la modélisation mais je me demande si des logiciels du type Matlab ou autre irait mieux? Qu'en pensez-vous?

    Merci.

Discussions similaires

  1. valeur d'un fichier .txt dans un label
    Par jolonghorn dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 03/12/2010, 14h59
  2. Extraire des valeurs d'un fichier txt
    Par boby35 dans le forum Octave
    Réponses: 5
    Dernier message: 16/04/2008, 12h05
  3. récupérer une valeur dans un fichier .txt ?
    Par _n1n1_ dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/04/2007, 19h19
  4. Comment sauvegarder des valeurs dans un fichier txt
    Par NELLLY dans le forum MATLAB
    Réponses: 3
    Dernier message: 16/04/2007, 17h39
  5. recuperer une valeur d'un fichier txt
    Par suya95 dans le forum Langage
    Réponses: 1
    Dernier message: 26/06/2006, 16h13

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