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] Importer *.txt et séparer en deux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut [VBA-E] Importer *.txt et séparer en deux
    Bonjour,

    Je cherche à importé un fichier texte de valeur dans un tableau excès
    Cela j’y suis arrivé avec ce code suivant :


    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
     
    Sub ImportText(FileName As String, PosImport As Range)
        Dim QT As QueryTable
        Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=PosImport)
        With QT
            .TextFileSemicolonDelimiter = True
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .Refresh
        End With
    End Sub
     
     
    Private Sub CommandButton1_Click()
     
    ImportText "C:\info.txt", Range("A1")
     
    End Sub
    Mon fichier ce décompose toujours comme ce qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    "Time","9103","C"
    "11:08:00","28.1 C"
    "11:08:01","28.0 C"
    "11:08:16","28.0 C"
    "11:08:17","28.0 C"
    "11:08:29","28.0 C"
    "11:08:32","28.0 C"
    "11:08:34","28.0 C"
    "11:08:36","28.0 C"
    "11:09:12","28.0 C"
    Je voudrais séparer les valeurs dans le tableau en deux colonnes séparé donc par le caractère « , » ( virgule)
    Pour l’instant mon code ne fait q’une seule colonne

    Et je dois aussi supprimer le « C » pour utiliser après les varaiables pour un graphique
    Merci d'avance ++

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut
    Bonjour,

    Quand on importe manuellement un fichier .txt par le biais du menu Outils -> Données externe, Excel propose de séparer les données en plusieurs colonnes. Tu dois juste spécifier par quoi tes données sont séparées (ici une virgule). Et le tour est joué pour la virgule.

    Et ensuite, pour supprimer les C, un coup d'Edition => Remplacer, et tu remplaces les C par rien du tout

    Tout ca en utilisant l'enregistreur de macros... j'espère t'avoir aidé

  3. #3
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut
    Merci mais je veux le réaliser via une macro.
    Ps: je connaisser cette mathode

    Merci d'avance pour vos autre réponses

  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
    Par défaut
    Tu connais peut êtrela méthode mais ton ouverture de fichier n'est pas idéale.
    Remplace déjà
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            .TextFileTextQualifier = None
    Ensuite, si tu ajoutes deux paramètres lors de l'ouverture de ton fichier, tu auras ce que tu veux sans macro supplémentaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub FichierTextSéparateurDécimalPoint()
        Workbooks.OpenText Filename:="D:\xls\TonClasseur.txt", StartRow:=1, _
        DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter _
            :=False, Semicolon:=False, Other:=True, OtherChar:=" ", DecimalSeparator:="."
    End Sub
    Maintenant, si tu veux te compliquer la vie ou si tu veux simplement apprendre comment séparer des données séparées par un... séparateur, tu peux toujours faire un split du contenu de ta cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 to derniereLigne
          Cells(i, 2) = Split(Cells(i, 1).Value, ",")(0)
          Cells(i, 3) = Split(Cells(i, 1).Value, ",")(1)
    Next
    En l'occurence, tes données ne sont pas homogènes, tu as deux virgules dans la première lignes et une seule dans les suivantes sauf une ou tu as un point avant le C
    Amuse-toi bien

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    Tu peux essayer cette adaptation:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ImportText(FileName As String, PosImport As Range)
        Dim QT As QueryTable
        Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=PosImport)
        With QT
            .TextFileOtherDelimiter = ","
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .Refresh
        End With
    End Sub


    michel

  6. #6
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut
    Merci beaucoup SilkyRoad
    sa marche, je vais me debrouiller pour supprimer les "C" et faire les graphique en Macro.
    Ps:Mais si tu as une idée elle serait la bien venu

    Merci ++


    J'ai essayé d'importer en selectionnant le fichier dans explorateur
    j'ai une ereur:
    "Type incompatible (erreur 13)"

    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 ImportText(FileName, PosImport As Range)
        Dim QT As QueryTable
        Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=PosImport)
        With QT
            .TextFileOtherDelimiter = ","
            .TextFileSemicolonDelimiter = True
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .Refresh
        End With
    End Sub
     
     
     
    Sub Macro1()
    Dim Fics
     Dim fic
     Fics = Application.GetOpenFilename("Fichier Texte (*.txt), *.txt", , "Sélectionnez un ou plusieurs fichiers", , True)
     
     If Not TypeName(Fics) = "Boolean" Then
    ImportText Fics, Range("A1")
     
     End If
     End Sub
    Merci d'avance

  7. #7
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut
    J'ai essayé comme sa mais, sa me ressort toujour une erreur:
    Type incompatible (erreur 13)
    sur la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=Range("A1"))

    Mon code:
    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
    Sub Macro2()
    Dim FileName
     
    FileName = Application.GetOpenFilename("Fichier Texte (*.txt), *.txt", , "Sélectionnez un ou plusieurs fichiers", , True)
     
     
     
     Dim QT As QueryTable
        Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=Range("A1"))
     
        With QT
            .TextFileOtherDelimiter = ","
            .TextFileSemicolonDelimiter = True
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .Refresh
        End With
     
     
    End Sub
    Merci d'avance

  8. #8
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut
    Je ne comprend pas car si je fais seulement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & "C:\INFO.TXT", Destination:=Range("A1"))
    Cela fonctionne trés bien cela importe bien les données.


    Mais l'orsque je met ceux-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=PosImport)
    Cela ne fonctionne pas?

    Merci d'avance

  9. #9
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    tu as quoi dans la variable FileName et PosImport ?

    tu dois avoir un souci avec ces variables c'est pour ça que ça marche pas je pense
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  10. #10
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut
    Dans FileName : "C:\INFO.TXT"
    Dans PosImport: Range("A1")

    Comme j'ai expliqué dans le post précedent.

    Merci d'avance

  11. #11
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Tu dis que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & "C:\INFO.TXT", Destination:=Range("A1"))
    ça marche..

    Essaye alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Filename, Destination:=Range("A1"))
    d'une part, et :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & "C:\INFO.TXT", Destination:=PosImport)
    car je suis pratiquement sur que vient d'une de tes 2 variables, voire les 2

    Pour ça, il faut tester ces 2 formules, comme ça si une des 2 marche pas, tu trouvera de quelle variable vient l'erreur, sinon, heuu bah on va réfléchir
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  12. #12
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut
    marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & "C:\INFO.TXT", Destination:=Range("A1"))

    Marche Pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Filename, Destination:=Range("A1"))


    Marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & "C:\INFO.TXT", Destination:=PosImport)
    Donc sa vient bien de la variable Filename qui vient de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileName = Application.GetOpenFilename("Fichier Texte (*.txt), *.txt", , "Sélectionnez un ou plusieurs fichiers", , True)
    Si je met un espion sur FileName Il y a bien "C:\INFO.TXT"


    Merrci d'avance

  13. #13
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut Graphique: Courbe
    Je te remercie sa marche bien,
    j'ai regarder ton faq sur les graphique j'ai commencer mon code
    pour créer le graph a partir de la selection
    je voudrais le temp du en X
    et les degrés en Y

    et que cela me face une courbe
    Merci a toi


    ma table excel aprés importa
    Time Degré
    11:08:00 28,1
    11:08:01 28
    11:08:16 28
    11:08:17 28,4
    11:08:29 28
    11:08:32 28
    11:08:34 28
    11:08:36 28,1
    11:09:12 28







    mon code:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    Sub ImportText(FileName As Variant, PosImport As Range)
        Dim QT As QueryTable
     
        Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
            FileName, Destination:=Range("A1"))
     
        With QT
            .TextFileOtherDelimiter = ","
            .TextFileSemicolonDelimiter = True
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .Refresh
        End With
    End Sub
     
     
    Sub Macro1()
        Dim FileName1 As Variant
        Dim i As Integer
     
        FileName1 = Application.GetOpenFilename("Fichier Texte (*.txt), *.txt", , _
            "Sélectionnez un ou plusieurs fichiers", , True)
     
        If IsArray(FileName1) Then
            For i = 1 To UBound(FileName1)
                ImportText FileName1(i), Range("A1")
            Next
        End If
     
     
        Range("A2:A2469").Select
        Selection.NumberFormat = "h:mm:ss"
     
    Range(Cells(2, 2), Cells(20, 1)).Select
    Selection.Replace What:=" C", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False
     
    'Démarrage Graph
    CreationGraphe2
     
    End Sub
     
    Public Sub CreationGraphe2()
     
    Dim MonGraphe As Chart, maplage As Range, MaSerie As Series, compteur As Long
    Dim Mini As Single, Maxi As Single
    Set maplage = Worksheets("Feuil1").Range(Cells(2, 2), Cells(20, 1))
    ThisWorkbook.Charts.Add
     
    MonGraphe.ChartType = xlXYScatter
    MonGraphe.SetSourceData maplage, xlColumns
    End Sub
    Merci d'avance

  14. #14
    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
    Par défaut
    Obtenu en enregistrant la macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Charts.Add
        ActiveChart.ChartType = xlLineMarkers
        ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A1:B10"), PlotBy _
            :=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "C"
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
        End With
    Mais le mieux est que tu enregistres la macro. Si tu veux un titre sur les axes ou un titre différent pour ton graphe.
    Pense à utiliser l'enregistreur de macro, le code n'est pas ce qu'il se fait de mieux mais ça peut t'aider

  15. #15
    Inactif Avatar de franck.automaticien
    Inscrit en
    Février 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Février 2004
    Messages : 238
    Par défaut
    Merci je n'y avais pas pensé.. sa marche nikel
    @°°++°°

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-excel] import de fichier txt sans délimiteur de texte
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/01/2008, 06h49
  2. [VBA-E] Import de fichier txt multiple
    Par Jidewe dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 13/02/2007, 11h45
  3. [VBA-E] import d'un txt dans un onglet
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/10/2006, 13h09
  4. [VBA-E]import fichier TXT et séparateur
    Par arkazar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/04/2006, 18h10
  5. [VBA Excel] Importer des tables Access dans Excel
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2005, 12h44

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