Fonction - Transfert dictionary

Le
FdeCourt
Bonjour à tous,

J'utilise les objets Disctionary, pour préparer une sorte de
conversion de données.
J'aurais une dizaine de dictionnaire à créer à partir du contenu d'un=
e
dizaine de fichier.

J'ai donc créé une fonction monDicon, qui prend le contenu de ces
fichier, et me les mets dans un dictionnaire, puis est censé revenir à
la macro principale (donc dans le code ci-dessous, monDico1 est un
dictionnaire dont le contenu est le fichier cité en paramètre).

Cela ne fonctionne pas :(

Voici le code appelant la fonction

Set monDico1 = CreateObject("Scripting.Dictionary")
monDico1 = monDico("monDico1.csv")


Et le code de la fonction :
Function monDico(Optional fichier As String) As Scripting.Dictionary
Dim oFSO As Scripting.FileSystemObject
Dim oFl As Scripting.File
Dim oTxt As Scripting.TextStream
Dim tmp
Set monDico = CreateObject("Scripting.Dictionary")
Set oFSO = New Scripting.FileSystemObject
chemin = ThisWorkbook.Path
Set oFl = oFSO.GetFile(chemin & fichier)
Set oTxt = oFl.OpenAsTextStream(ForReading)
With oTxt
While Not .AtEndOfStream
Ligne = .ReadLine
tmp = Split(Ligne, "|")
monDico.Item(tmp(0)) = tmp(1)
ReDim tmp(0 To 0)
Wend
End With
oTxt.Close
End Function

Avec le code ci-dessus, j'ai une erreur 450 - Nombre d'argument
incorrect ou affectation de propriété incorrecte.

Pourquoi !!!!

Merci pour votre aide

Cordialement,

F.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FdeCourt
Le #21525041
Hello,

Je me répond à moi même, mais cela entraîne une autre question :

Pour résoudre le problème, il faut écrire :

Set monDico1 = monDico("monDico1.csv")

Mais pourquoi ?

Cordialement,

F.
Jex
Le #21525081
Bonjour,

le premier set > Set monDico1 = CreateObject("Scripting.Dictionary") <
permet de créer la variable du type "Scripting.Dictionary" et cette
variable est un objet comme l'indique la fonction CreateObject,
le deuxième set > Set monDico1 = monDico("monDico1.csv") < est alors
obligatoire pour affecter un objet (renvoyé par la fonction monDico) à
la variable objet monDico1.

Le message d'erreur indique qu'on attend une propriété sur l'objet
invoqué, par exemple monDico1.Item(0).

J.

On 9 avr, 13:38, FdeCourt
Hello,

Je me répond à moi même, mais cela entraîne une autre question :

Pour résoudre le problème, il faut écrire :

Set monDico1 = monDico("monDico1.csv")

Mais pourquoi ?

Cordialement,

F.
Publicité
Poster une réponse
Anonyme