Fonction - Transfert dictionary

Le
FdeCourt
Bonjour tous,

J'utilise les objets Disctionary, pour prparer une sorte de
conversion de donnes.
J'aurais une dizaine de dictionnaire crer 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 paramtre).

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 proprit incorrecte.

Pourquoi !!!!

Merci pour votre aide

Cordialement,

F.
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