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 :

Macro Excel : ouverture d'un fichier .txt


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2008
    Messages : 124
    Points : 70
    Points
    70
    Par défaut Macro Excel : ouverture d'un fichier .txt
    Bonsoir à tous,

    Voilà, je me lance dans la programmation de macro sous excell via VBA. Dans l'ensemble, c'est pas très compliqué (surtout pour ce que je veux faire) quand on connait un peu de programmation.

    Pourtant, j'avoue que j'aimerai comprendre pourquoi la macro suivante (que j'ai récupéré dans une autre macro) marche pour ouvrir un fichier .txt et l'affiche dans excell. Voici les lignes:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Pfad
     
    Pfad = Application.GetOpenFilename(fileFilter:="*,*", MultiSelect:=True)
    a = 1
     
    Workbooks.OpenText Filename:=Pfad(a), Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="=", FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
    (les 4 dernières lignes se sont que des options...)

    Et pourquoi celle-ci ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Application.Dialogs(xlDialogOpenText Filename:= _ "fichier", _
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="=", FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True).Show
    Ce que je comprends vraiment pas, c'est à quoi sert la variable "a" dans le nom du fichier et pourquoi faut il prévisualiser le fichier.

    Voilà, si vous avez des idées, merci d'avance.

    Johann

    Configuration: Windows Vista
    Firefox 3.0.5

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 1 040
    Points : 1 192
    Points
    1 192
    Par défaut
    bonsoir,


    les _ , sont à placer en fin de ligne lorsqu'une ligne de code et trop longue et que tu veux l'afficher sur deux lignes.

    la variable a, est un index , à 1 car en mode multiselect (plusieurs fichiers selectable en même temps) GetOpenFileName renvoi un tableau de fichier, le permet d'extraire le 1° (ou 2° si le tableau commence à l'index 0 ) fichier sélectionné.
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2008
    Messages : 124
    Points : 70
    Points
    70
    Par défaut
    Merci JackOuya,

    Ta réponse est très claire, du moins en ce qui concerne la variable a et GetOpenFileName. C'est beaucoup plus clair!!!

    Par contre, en ce qui concerne les _, si je met le code suivant, j'ai toujours une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Application.Dialogs(xlDialogOpenText Filename:="fichier" , _
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="=", FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1) _ 
    , Array(6, 1), Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True).Show
    Je sais que je cherche la petite bete , mais je comprends toujours pas pourquoi ca ne fonctionne pas. Il y a des "_" qu'en fin de ligne; cela veut t il dire que l'on ne peut pas ouvrir un fichier ".txt" à l'aide de "Application.Dialogs(xlDialogOpenText)"

    Merci

    Johann

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mai 2005
    Messages
    4 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : mai 2005
    Messages : 4 236
    Points : 24 270
    Points
    24 270
    Par défaut
    Tu mélanges deux choses:
    L'affichage du dialogue d'une part et l'ouverture du fichier d'autre part.

    L'ouverture du fichier doit se faire avec le résultat du dialogue.
    Autrement dit, après le .Show.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2008
    Messages : 124
    Points : 70
    Points
    70
    Par défaut
    Merci AlainTech pour cette nouvelle précision, je commence à y voir plus clair!!

    Donc, si je comprends bien, il me faut d'abord faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogOpen).Show
    Pour afficher le dialogue et ensuite faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Workbooks.OpenText Filename:=file, Origin:=xlMSDOS, StartRow:=1 _
    , DataType:=xlDelimited, TextQualifier:= _
     xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="=", FieldInfo _
            :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1),_
    Array(6, 1),  Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
    Pour ouvrir le fichier .txt dans le format que je veux.

    Dans ce cas se pose à moi un nouveau problème (désolé, mais je suis vraiment débutant...), comment faire pour donner un nom à mon fichier que je choisis dans la boite de dialogue pour appliquer le "format" d'ouverture au fichier précédemment sélectionné?

    Merci d'avance

    Johann

  6. #6
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 1 040
    Points : 1 192
    Points
    1 192
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogOpen).Show
    combine l'affichage l'affichage de la boite de dialogue et l'ouverture du fichier, mais ne te donne pas accés au fonctions de formatage.

    pourquoi as tu abandonné GetOpenFileName :
    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
     Dim yaMonFichier
     Dim yaWK As Workbook
     yaMonFichier = Application.GetOpenFilename
    If yaMonFichier <> False Then
        Set yaWK = Workbooks.Open(.OpenText Filename:=    yaMonFichier,Origin:=xlMSDOS, StartRow:=1 _
          , DataType:=xlDelimited, TextQualifier:= _
           xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False,Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="=", FieldInfo _
            :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1),_
    Array(6, 1),  Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=Truer)
    'ICI tu peu agir sur ton classeur avec la variable yaWk :
    msgbox yaWk.sheets(1).range("A1")
     
     
     End If

    tu dis quoi ...
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2008
    Messages : 124
    Points : 70
    Points
    70
    Par défaut
    Je dis Merci beaucoup Jacques.

    Je n'ai pas abandonné le "getOpenFileName",
    c'est juste que je pense qu'il est important de savoir et comprendre pourquoi ca ne marchait pas: opn apprend plus de nos erreurs

    Dans tous les cas, merci beaucoup, et j'aurais surement d'autres questions, mais plus tard

    Johann

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

Discussions similaires

  1. Macro Excel pour décortiquer un fichier TXT
    Par Gueuz dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 31/01/2009, 16h23
  2. [VBA]macro excel ouverture et transformation de fichier
    Par astrolane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/05/2007, 12h19
  3. [VBA-E] macro ouverture liste de fichier txt
    Par didi73 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/03/2007, 15h30
  4. [VBA - E] - Ouverture d'un fichier .txt
    Par jimbololo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2006, 14h45
  5. Réponses: 2
    Dernier message: 06/04/2005, 13h01

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