Type d'arg by ref incompatible

Hola !

J'ai un petit soucis que je n'arrive pas à corriger .. A fortiori que j'ai déjà utilisé la synthaxe sur un autre document que cela marche parfaitement.

Sur mon document j'ai créé un module de classe, un module qui ne contient que des créations de dictionnaires et des modules où je code mes macro en faisant appel à mes dico. Le but c'est de modifier des feuilles qui contiennent des infos, par celles contenues dans le dictionnaire tel que, si le CurISIN retrouve l'ISIN alors modification

wk_posEND.Cells(counterHisto, 3) = Dic_Histo(curISIN).H_Qty

J'ai le bug sur "curISIN"

Voilà quelques infos supplémentaires sur la façon dont je déclare mes variables car le soucis vient de là...

Au niveau du module de ma macro:

Public Sub Historisation()
Dim wk As Workbook
Dim wk_posEND, wk_MktDataEND, wk_priceEND As Workbook
Dim dateCLOSE As Date
Dim counterHisto As Long
Dim DicHisto As New Dictionary
'Appel du dictionnaire d'historisation'
Call Dic_Histo(DicHisto)

Au niveau du fameux dic_histo:

Public Sub Dic_Histo(ByRef DicHisto As Dictionary)

 Dim wk As Workbook
 Dim sh_PnL As Worksheet
 Dim ISIN As Variant
 Dim counter As Integer
 Dim CurInstr As clsInstrumentData

 Set wk = Workbooks("PnL.xlsm")
 Set sh_PnL = wk.Sheets("PnL_Daily")
 Set dic_pnl = New Dictionary

 counter = 12

While CStr(sh_PnL.Cells(counter, 4).Value) <> ""
    ISIN = CStr(sh_PnL.Cells(counter, 4).Value)

    If Not DicHisto.Exists(ISIN) Then
        Set CurInstr = New clsInstrumentData
        CurInstr.H_book = CStr(sh_PnL.Cells(counter, 2))
        CurInstr.H_Qty = CDbl(sh_PnL.Cells(counter, 13))
        CurInstr.H_Px = CDbl(sh_PnL.Cells(counter, 14))
        CurInstr.H_AI = CDbl(sh_PnL.Cells(counter, 15))
        CurInstr.H_days_acc = CDbl(acc = sh_PnL.Cells(counter, 16))
        Call DicHisto.Add(ISIN, CurInstr)
    End If
counter = counter + 1
Wend

 End Sub

Au niveau du module de classe:

'Dictionnaire d'historisation'
Public H_book As String
Public H_Qty As Double
Public H_Px As Double
Public H_AI As Double
Public H_days_acc As Double

Je vous remercie de votre aide. Je pense que c'est tout con, j'ai du mal déclarer une variable, où la déclarer au mauvaise endroit. Mais après 1h rien trouvé.

Bonne journée.

Bonjour,

quel est le message que tu reçois ? je soupçonne qu'il manque une référence à scripting.dictionary

Je viens de trouver l'erreur ... J'avais déclarer "DicHisto" au lieu de "Dic_Histo"

Je vais quand meme laisser le sujet ouvert car désormais c'est une autre erreur qui apparait.

'Appel du dictionnaire d'historisation'
Call Dic_Histo(DicHisto)

erreur de type: Utilisation incorrect de la propriété

Si quelqu'un peut me dire à quoi cela correspond. Sur google, etc on trouve de tout pour de type d'erreur

EDIT: pour l'aide car je me rends compte que la synthaxe est pas bien choisie..

"Dic_Histo" est le nom de la macro qui contient de le dictionnaire "DicHisto" fonctionnait avec les clefs "ISIN"

Bonjour,

Généralement lorsque ce type d'erreur survient, on place l'argument ByVal et cela règle la question...

En effet, on a cette erreur lorsqu'on passe une valeur d'argument à une procédure au moyen d'une variable qui n'est pas du type exact de l'argument... Aucun souci dans les cas courants.

Dans ton code cependant, un truc me chagrine : ta variable curISIN n'est très certainement pas du type qu'attend ta procédure Dic_Histo... Mais il s'agit d'une Sub et je ne vois pas ce qu'elle vient faire à droite d'un signe égale ! Il ne s'agit pas d'une Function, et elle ne renvoie aucun résultat...

N'y aurait-il pas confusion de ta part (avec DicHisto par exemple...) ?

Cordialement.

Je viens de trouver l'erreur ... J'avais déclarer "DicHisto" au lieu de "Dic_Histo"

Je vais quand meme laisser le sujet ouvert car désormais c'est une autre erreur qui apparait.

'Appel du dictionnaire d'historisation'
Call Dic_Histo(DicHisto)

erreur de type: Utilisation incorrect de la propriété

Si quelqu'un peut me dire à quoi cela correspond. Sur google, etc on trouve de tout pour de type d'erreur

EDIT: pour l'aide car je me rends compte que la synthaxe est pas bien choisie..

"Dic_Histo" est le nom de la macro qui contient de le dictionnaire "DicHisto" fonctionnait avec les clefs "ISIN"

EDIT 2: Non j'ai dit de la merde, le nom du dictionnaire est bien dicHisto et pas dic_histo. Retour au Problème de base ...

C'est ce qu'il me semblait, que l'erreur ByRef était trompeuse dans ce cas... !

Bonne continuation.

Dans ton code cependant, un truc me chagrine : ta variable curISIN n'est très certainement pas du type qu'attend ta procédure Dic_Histo... Mais il s'agit d'une Sub et je ne vois pas ce qu'elle vient faire à droite d'un signe égale ! Il ne s'agit pas d'une Function, et elle ne renvoie aucun résultat...

Hello merci d'avoir regardé. En effet je me prends les pinceaux un peu dans mes synthaxes

Malgré tout si tu parles de cette égalité:

 wk_posEND.Cells(counterHisto, 3) = dic_histo(curISIN).H_Qty

C'est bien à ce niveau que l'underscore était pas nécessaire. Merci de votre aide. Sujet résolu

C'était bien ça ! Bon courage pour continuer. Tu t'es lancé dans un gros truc il semble...

C'est pour calculer le chiffre d'affaire de ma salle de trading. Avec differentes activités, donc differentes façons de le calculer... Sans que le pauvre stagiaire que je suis ne passe des heures le soir à calculer ^^

Et j'ajoute des petits fonctionnalités comme les volumes requestés, traités, la marge, ...

Rechercher des sujets similaires à "type arg ref incompatible"