Lecture/écriture d'un fichier txt sous VBA

Fermé
Clrtte - 23 nov. 2007 à 15:10
 Clrtte - 12 janv. 2008 à 14:46
Bonjour,

Je dois réaliser une macro qui va utiliser des données statistiques d'un fichier texte.
Mon fichier se trouve sur cette forme:
colonne : les diffèrentes variables x, y, z , t ...
Ma macro doit demander à l'utilisateur le nombre de variable et le nombre de valeurs pour chaque variable.
ON fonctionne de ça, elle doit écrire ces valeurs dans un tableau exel

x y z ...
0 0 0
0 0 0
0 0 0
. . .
. . .
. . .

Je ne sais pas comment faire pour lui imposer le nombre de ligne et de colonne à lire et à écrire. Est-ce que quelqu'un peur m'aider??
A voir également:

2 réponses

Utilisateur anonyme
23 nov. 2007 à 23:14
Bonjour,

Voici un exemple de départ pour lire et écrire !

Option Explicit
'

Dim Limite As Double
'

Sub EcrireFichierTexte()

    Dim NumFic As Integer
    Dim Valeur As String
    Dim Boucle As Integer
    
    Valeur = "C:\Essai.txt"
    NumFic = FreeFile
    
    Open Valeur For Output As #NumFic
    For Boucle = 9 To 1 Step -1
        Write #NumFic, Boucle
    Next Boucle
    Close #NumFic
    
End Sub
'

Sub LireFichierTexte()

    Dim NumFic As Integer, Message As String
    Dim Valeur As String, Resultat As Integer
    Dim Compteur As Double
    Dim Boite() As Integer
    
    Valeur = "C:\Essai.txt"
    NumFic = FreeFile
    Limite = 0
    
    ' Premier passage, connaître le nombre d'élément
    Open Valeur For Input As #NumFic
    While Not EOF(NumFic)
        Input #NumFic, Resultat
        Limite = (Limite + 1)
    Wend
    Close #NumFic

    'Second passage, effectuer la lecture
    ReDim Boite(Limite) As Integer
    Compteur = 0
    Open Valeur For Input As #NumFic
    While Not EOF(NumFic)
        Input #NumFic, Resultat
        Boite(Compteur) = Resultat
        Compteur = (Compteur + 1)
    Wend
    Close #NumFic

    MsgBox "Appel"
    Trier Boite, Message
    MsgBox Message

End Sub
'

Function Trier(ByRef Boite() As Integer, ByRef Message As String)

    Dim Boucle As Integer, ValeurTmp As Integer, Compteur As Integer
    
    For Boucle = 0 To (Limite - 1)
        For Compteur = 0 To (Limite - 1)
            If (Boite(Compteur) > Boite(Compteur + 1)) Then
                ValeurTmp = Boite(Compteur + 1)
                Boite(Compteur + 1) = Boite(Compteur)
                Boite(Compteur) = ValeurTmp
            End If
        Next Compteur
    Next Boucle
    
    For Boucle = 0 To Limite
        Message = Message & Boite(Boucle) & vbCrLf
    Next Boucle
    
    
End Function
'


pour le lecture il faudra ajouter !

Dim LimiteLignes As Long ' le nombre de valeurs
Dim LimiteColonnes As Long ' le nombre de variable
Dim CompteurLg As Long
Dim CompteurCl As Long

While (Not EOF(NumFic)) And ( CompteurLg <= LimiteLignes)
..Input #NumFic, Resultat
..Limite = (Limite + 1)
..CompteurLg = (CompteurLg + 1)
Wend

et ensuite ajouter un traitement sur la variable Resultat.

c'est un début, qu'en dite vous ?

Lupin
8
Juste un message pour te remercier de te ton aide...
0