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
    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é
    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
    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

    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
    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é
    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
    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

###raw>template_hook.ano_emploi###