FSO parametre fonction

gnosis35 Messages postés 57 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 5 avril 2010 - 28 déc. 2004 à 23:41
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 29 déc. 2004 à 12:04
Bonjour,

voilà le problème :

je crée un fichier texte de type fso et j'aimerai le faire passer en parametre dans une fonction récurssive pour écrire dedans mais je n'arrive pas à le faire passer en paramètre dans ma fonction...

petit schema :

dim chemin ... ' chemin contient le chemin du fichier texte

Set Fichiertext = FSO.CreateTextFile(chemin & "\exemple.txt", True)
Fichiertext.Write ("en-tete")
mafonction param1, param2,...,Fichiertext
-------------------------------------------------------------------------
Private Sub mafonction(param1 as string,param2 as....,Fichiertext as ?????????????) 'file ne marche pas, filesystemobject non plus, objet non plus, textstream non plus....

Fichiertext.write("blabla")

mafonction param1, param2,...,fichiertext
end

Le problème c qu'il faux que je crée mon fichier text en dehors de ma fonction pour y mettre un en-tête... bref arf et puis mem si je le créait dans ma fonction ça n'irait pas car c une fonction récurssive....
(ça le crérait à chaque fois que je rappelle ma fonction)

Le pb c donc de passer un fichier text crée par un FSO en paramètre d'une fonction...

ou sinon passer en parametre le chemin du fichier text à ma fonction mais apres je ne sais pas coment écrire dans un fichier texte en ne connaissant que son chemin... ou alors dans ce cas comment écrire dedans sans gérer les lignes ou je vais écrire com j'ai pu voir dans des exemple car je veux écrire bout à bout, ne pas à avoir à dire à qu'elle ligne ça doit etre écrit

si je ne suis pas clair je peux bien sur me réexpliquer lol

merci d'avance

3 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
29 déc. 2004 à 01:15
objet ne marche pas mais Object marche

Daniel
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 déc. 2004 à 11:36
Salut gnosis35
Je pense que tu te compliques pour rien.

Est-ce que 'FichierText' est toujours l'objet sur lequel ta Sub doit agir ?
- NON : Dans ce cas, tu as en effet besoin de passer ce paramètre. Comme le dit Gobillot, 'FichierText As Object' fonctionne. Malgré tout, pour éviter de confondre le paramètre avec l'objet, je te conseille de modifier le nom du paramètre pour ne pas faire la confusion entre l'objet FichierText qui existe en dehors de ta Sub et l'objet FichierText utilisé à l'intérieur de ta Sub. Exemple de définition de la Sub :
Private Sub mafonction( .... , monFichier as Object)

Et dedans, bien sûr, utiliser :
monFichier.write("blabla")


- OUI : Dans ce cas, pas besoin de passer l'objet en paramètre.
Il suffit de déclarer l'objet FichierText en Public dans un module : comme ça, cet objet sera accessible partout dans ton projet, y compris dans ta Sub :
Public FichierText As Object


Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
29 déc. 2004 à 12:04
pour éviter les types "Object"
tu ajoutes la référence Microsoft Scripting Runtime

Dim fso As FileSystemObject
Dim Fichiertext As TextStream

Set fso = New FileSystemObject

Set Fichiertext = FSO.CreateTextFile(chemin & "\exemple.txt", True)
Fichiertext.Write ("en-tete")

Le paramètre a passer est alors du type TextStream:
Private Sub mafonction(param1 as string,param2 as....,Fichiertext as TextStream)

PS: le mieux c'est d'utiliser les Fonctions natives de VB (open for output As #1) et dans ce cas là il n'y a aucun paramètre à passer.

Daniel
0
Rejoignez-nous