Bonjour,
Pas très expérimenté en VB 6 car comme beaucoup, je l'utilise ponctuellement pour me simplifier la vie dans des macros, j'ai une question concernant le passage des numéros de fichiers ouverts en argument, d'une fonction à une autre.
Admettons pour simplifier le contexte, que j'aie une fonction qui altère un fichier, déjà ouvert; dont le numéro est reçu en argument:
Function ModifierFichier(ByVal hFichierTexte AsObject)AsInteger
Dim iNbModifications AsInteger
Dim strBufferLigne AsString
iNbModifications = 0
strBufferLigne =""
Do UntilEOF(hFichierTexte)
Line Input #hFichierTexte, strBufferLigne
...'traitement ligne par ligne iNbModifications = iNbModifications + 1
Loop
ModifierFichier = iNbModifications
End Function
Dans le corps de ma macro principale, je souhaite pouvoir appeler ma précédente fonction avec n'importe quel fichier ouvert:
Sub ModifierTout()
Dim hFichierTexte AsObject Dim iNbModifications AsInteger
hFichierTexte = FreeFile()
Open("C:\Documents and Settings\foo.txt")ForInputAs#hFichierTexte
'Application.Cursor = xlWait
iNnModifications = ModifierFichier(hFichierTexte)
'Application.Cursor = xlDefault
Close #hFichierTexte
End Sub
Mais écrit comme ça, l'exécution provoque une erreur "
propriété ou méthode non gérée par cet objet". J'ai sans doute fait une confusion entre
hFichierTexte et
#hFichierTexte, ou alors le passage des argument
ByRef au lieu de
ByVal. Si quelqu'un a une idée pour m'éclairer suite à ce mail coloré ? À moins que ce que je ne souhaite faire soit techniquement impossible en VB.
Merci d'avance.