Passer numéro de fichier en argument [Résolu]

Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
- - Dernière réponse : zwyx
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
- 2 juil. 2009 à 17:54
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.

<hr size="2" width="100%" />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
<hr size="2" width="100%" />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
<hr size="2" width="100%" />
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.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
13299
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
23
3
Merci
salut,

tout en haut de ton code, ajoutes OPTION EXPLICIT

çà sert à relever les erreurs de variables non déclarées
on voit de suite la faute de frappe ici :

iNnModifications




ensuite FreeFile renvoie un INTEGER, pas un OBJECT

le chemin ne doit pas être entre parenthèses

pour le reste, c'est à peu près bon ;)
ce qui donne :






Function 
ModifierFichier(
ByVal 
hFichierTexte
As Integer
)
As Long

    ModifierFichier =  0
    Dim strBufferLigne As String

    strBufferLigne = ""

    Do Until EOF(hFichierTexte)
        Line Input #hFichierTexte, strBufferLigne
        Debug.Print strBufferLigne
        'traitement
ligne par ligne
        ModifierFichier = ModifierFichier + 1
    Loop
End Function

<hr size="2" width="100%" />

Sub 
ModifierTout()

    Dim hFichierTexte As Integer
    Dim iNbModifications As Long

    hFichierTexte = FreeFile()
    Open "C:\Documents and Settings\foo.txt" For Input As #hFichierTexte
    'Application.Cursor = xlWait
    iNbModifications = ModifierFichier(hFichierTexte)
    'Application.Cursor = xlDefault
    Close #hFichierTexte
End Sub





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>






NB : attention, MACRO = VBA , pas VB6
catégorie du forum modifiée

<hr size ="2" width="100%" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
0
Merci
Merci beaucoup pour ton aide. Et désolé de mettre trompé de catégorie pour poster mon message.

Bonne soirée.
Commenter la réponse de zwyx