Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction - Transfert dictionary

2 réponses
Avatar
FdeCourt
Bonjour =E0 tous,

J'utilise les objets Disctionary, pour pr=E9parer une sorte de
conversion de donn=E9es.
J'aurais une dizaine de dictionnaire =E0 cr=E9er =E0 partir du contenu d'un=
e
dizaine de fichier.

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

Cela ne fonctionne pas :(

Voici le code appelant la fonction

Set monDico1 =3D CreateObject("Scripting.Dictionary")
monDico1 =3D 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 =3D CreateObject("Scripting.Dictionary")
Set oFSO =3D New Scripting.FileSystemObject
chemin =3D ThisWorkbook.Path
Set oFl =3D oFSO.GetFile(chemin & fichier)
Set oTxt =3D oFl.OpenAsTextStream(ForReading)
With oTxt
While Not .AtEndOfStream
Ligne =3D .ReadLine
tmp =3D Split(Ligne, "|")
monDico.Item(tmp(0)) =3D 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=E9t=E9 incorrecte.

Pourquoi !!!!

Merci pour votre aide

Cordialement,

F.

2 réponses

Avatar
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.
Avatar
Jex
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 wrote:
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.