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] Ouvrir plusieurs fichiers textes depuis Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut [VBA] Ouvrir plusieurs fichiers textes depuis Excel
    Hello,

    J'ai un gros souci

    Dans ma routine, je cherche à importer des valeurs depuis un fichier weigth.txt, faire des calculs dans Excel puis inscrire les résulats dans un nouveau fichier Junk.txt. Le problème c'est qu'il me semble être impossible d'ouvrir plusieurs fichiers en même temps. Ca me paraît surprenant mais je reçoit le message d'erreur: 'fichier déjà ouvert' lorsque j'essaie d'ouvrir le fichier junk avec le fichier weight déjà ouvert...

    Quelqu'un a-t-il une solution?

    Voilà 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
    53
    54
    55
    56
    57
    58
    59
     
    Option Explicit
    Const ML_PATH = "C:weight.txt"
    Const sheet = "Perf"
     
    Sub optimweights_txt2()
     
        Dim monTab() As String
        Dim ligne As String
        Dim temp As String, var As String
        Dim iFileNum As Long
        Dim strDestFile As String
        Dim poids(10)
        Dim i As Integer
     
        Worksheets(sheet).Select
     
        Application.ScreenUpdating = False
     
        strDestFile = "c:JUNK.txt"
     
        iFileNum = FreeFile
     
        Open strDestFile For Output As #iFileNum
     
        var = "Column1; Column2; Column3; Column4"
     
        Write #iFileNum, var
     
        Open ML_PATH For Input Access Read As 1
     
        Do While Not EOF(1) ' Loop until end of file.
            Line Input #1, ligne
        MsgBox ligne
            monTab = Split(ligne, ";")
     
           'convert string to double
            For i = 0 To 9
     
            poids(i) = Val(monTab(i))
     
            Next i
     
        Worksheets(sheet).Range("A2:J2").Value = poids()
        Calculate
     
         temp = Cells(3, 14).Value & ";" & Cells(3, 15).Value & ";" & Cells(3, 16).Value & _
         ";" & Cells(3, 17).Value
     
     
        Write #iFileNum, temp
     
     
        Loop
        Close #1
        Close #iFileNum
     
     
        End Sub

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Open "d:\FichierText.txt" For Input As #1
        Open "e:\Fichier2Text.txt" For Input As #2
        Do While Not EOF(1)
            Line Input #1, ligne
            MsgBox ligne
        Loop
        Do While Not EOF(2)
            Line Input #2, ligne
            MsgBox ligne
        Loop
        Close #1
        Close #2

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    j'ai toujours un problème, est-ce important d'avoir les 2 fichiers textes dans des disques différents??? Ca m'étonnerai un peu mais bon.

    Si je me réfère à ton code, je suis plutôt dans la situation suivante:

    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
     
        ifilenum=freefile
     
       Open "d:\FichierText.txt" For Output As #ifilenum
     
       Write #ifilenum, "something"
     
        Open "e:\Fichier2Text.txt" For Input As #2
        Do While Not EOF(1)
            Line Input #1, ligne
            MsgBox ligne
     
       Write #ifilenum, "something else"
       Loop
     
        Close #ifilenum
        Close #2
    Donc j'ai 2 fichiers ouverts, je prends des données dans l'un je calcule un peu et je les recrache dans le second. Le code s'arrête à la seconde commande Open avec le message, fichier déjà ouvert.

    Merci!

  4. #4
    Expert éminent


    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
    Par défaut
    défini un entier par fichier et utilise freefile pour déterminer le numéro de fichier .. utilise ensuite cette variable dans toutes les opération sur le fichier..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim iFile1 as integer 
    dim iFile2 as integer 
    iFile1= freeFile
    open "d:\FichierText.txt" For Output As #ifile1
    iFile2= freeFile
    Open "e:\Fichier2Text.txt" For Input As #iFile2
    Line Input #iFile2, ligne
    Write #ifile1, ligne
    close #iFile1
    Close #iFile2
    et surtout n'utilise plus #1 ou #2...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    OK j'ai trouvé le truc... ne pas utiliser "freefile"

    Donc
    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
     
       Open "d:\FichierText.txt" For Output As #1
     
       Write #1, "something"
     
        Open "e:\Fichier2Text.txt" For Input As #2
        Do While Not EOF(2)
            Line Input #2, ligne
            MsgBox ligne
     
       Write #1 "something else"
       Loop
     
        Close #1
        Close #2
    merci beaucoup

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    ok, j'avais pas vu ta dernière réponse, c'est encore mieux!

    Merci

  7. #7
    Expert éminent


    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
    Par défaut
    Citation Envoyé par Stephane_123
    OK j'ai trouvé le truc... ne pas utiliser "freefile"

    ....
    ben freefile comme son nom l'indique permet de trouver un numéro de fichier libre.. il faut ensuite utiliser ce numéro non seulement pour ouvrir le fichier mais aussi pour écrire/lire à l'intérieur de celui-ci ...
    aprés tu n'est pas obligé de l'utiliser .. mais si un jour tu utilise ta procédure depuis un code .. qui as déjà ouvert un fichier avec le numéro 1 ou 2 ... tu aura un probléme ...( fichier déjà ouvert... ou pas le bon..)

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/08/2008, 14h36
  2. Réponses: 1
    Dernier message: 25/08/2008, 12h57
  3. Ouvrir plusieurs fichiers texte : *texte.txt
    Par Jenn74 dans le forum Général VBA
    Réponses: 6
    Dernier message: 16/05/2007, 17h54
  4. ouvrir plusieurs fichiers texte
    Par styliebeuf dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 09/11/2006, 23h10
  5. Ouvrir un fichier text avec Excel
    Par Chopard dans le forum Delphi
    Réponses: 2
    Dernier message: 07/11/2006, 23h33

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