Exporter un tableau dans un fichier texte (séparateur et retours à la ligne)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 640 fois - Téléchargée 27 fois

Contenu du snippet

Il s'agit de l'inverse de la fonction que proposait Jean_Marc_N2. http://www.vbfrance.com/codes/IMPORTATION-FICHIER-TXT-SERVANT-MINI-BASE-DONNEES-SEPARATEURS_39150.aspx. Cette fois ce n'est pas l'import d'un tableau a partir d'un fichier texte mais l'export d'un tableau vers un fichier texte.

Source / Exemple :


Private Function ExportTxtFile(ByVal fileName As String, ByVal separator As String, ByRef tData() As String, ByRef errorString As String, Optional ByVal baseArray As Integer = 1) As Boolean
Dim f As Integer
Dim tLine As String
Dim tSplit As String
Dim buffer As String
Dim nbItem As Long
Dim k As Long, l As Long

    On Error GoTo ExportTxtFile_ERR
    
    f = FreeFile()
    Open fileName For Output As #f
              
    
    For k = LBound(tData(), 1) To UBound(tData(), 1)
         tLine = tData(k, LBound(tData(), 2))
        For l = LBound(tData(), 2) + 1 To UBound(tData(), 2)
            tLine = tLine & separator & tData(k, l)
        Next l
        Print #f, tLine
     Next k
     
     Close #f
  
    ExportTxtFile = True

ExportTxtFile_END:
    Exit Function
    
ExportTxtFile_ERR:
    errorString = Err.Description
    Resume ExportTxtFile_END
End Function

Conclusion :


cette fonction s'appelle de cette manière:
Dim sResult as string()
Dim r As Boolean, szErr As String

r = ExportTxtFile("F:\gestion doc en prgramation\feuilles\resultat.txt", "<%;%>", sResult(), szErr, 1)

"<%;%>" est le séparateur que j'ai choisi

r est une valeur booléne. Vrai=>
le tableau a été exporté
Faux=< le tableau n'a pas été exporté

Merci Jean Marc, là je n'ai pas fait grand chose ;)

A voir également

Ajouter un commentaire

Commentaires

gnieark
Messages postés
53
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
22 octobre 2010
-
un défaut dans le code... avant il faut redimmensionner la table tdata() à la même taille que le tableau source. dans mon cas:

ReDim tdata(LBound(résultat(), 1) To UBound(résultat(), 1), LBound(résultat(), 2) To UBound(résultat(), 2))
jean_marc_n2
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009
-
Hello,

je n'ai pas testé, mais à première vue ce n'est pas mal! Bonne utilisation de Freefile, de Lbound et Ubound, code bien indenté.

QQ petites choses:
- tu as gardé baseArray en paramètre optionel mais le code ne l'utilise pas. Tu peux donc l'enlever.
- Je ne vois pas ce que fait l'instruction tLine tData(k, LBound(tData(), 2)) qui suit le For k ...
=> Tu dupliques le premier élément de chaque ligne?? Ceci peut être enlevé à mon avis. Une erreur de copy/paste?

- Il n'y a pas besoin de redimensionner tdata(). Il est alloué par l'appelant, la fonction peut juste l'utiliser, il n'y a rien de plus à faire.

Bonne continuation :-)
gnieark
Messages postés
53
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
22 octobre 2010
-
"- Je ne vois pas ce que fait l'instruction tLine = tData(k, LBound(tData(), 2)) qui suit le For k = ..."

oui effectivement, je suis allé un peu vite et j'ai oublié de le supprimer.

La fonction export, je ne vais pas l'utiliser de suite, je dois finir l'interface utilisateur de mon programme (donc lecture seulement,à moins que je créé un "mouchard" pour savoir qui utilise le programme) et en dernier je referai une interface pour le gestionnaire (moi)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.