Type mismatch (Ubound)

salut tout le monde,

Un petit problème quand j'arrive sur ce code :

Dim ROP_Coef() As Variant

ReDim ROP_Coef(2, UBound(ROP_NBI, 2))

à redim j'ai un message d'erreur "type mismatch run time error13"

Je pense que c'est dans l'expression du code non ?

Je n'avais pas ce problème fin Décembre...

Merci !

voici le code entier pour cette partie :

 For k = 0 To 4

    UpdateROPNBI = DateSerial(Year(AsOf), 1, 1)
    UpdateROPPO = DateSerial(Year(AsOf) - 1, 12, 1)

    If CLng(DateAdd("m", -3 * k, AsOf)) < CLng(UpdateROPNBI) Then
        UpdateROPNBI = DateSerial(Year(AsOf) - 1, 1, 1)
    End If

    If CLng(DateAdd("m", -3 * k, AsOf)) < CLng(UpdateROPPO) Then
        UpdateROPPO = DateSerial(Year(AsOf) - 2, 12, 1)
    End If

    myreq = "Select  Mnemo, Val FROM tbRWA_Params WHERE AsOf = " & CLng(UpdateROPNBI) & "  AND Type = 'ROP NBI'"
    rs.Open myreq, cn
    If Not rs.EOF Then
        ROP_NBI = rs.GetRows()
    End If
    rs.Close

    myreq = "Select Mnemo, Val FROM tbRWA_Params WHERE AsOf = " & CLng(UpdateROPPO) & "  AND  Type = 'ROP Pertes OP'"
    rs.Open myreq, cn
    If Not rs.EOF Then
        ROP_OP = rs.GetRows()
    End If
    rs.Close

    Dim ROP_Coef() As Variant
   [b][i][u] ReDim ROP_Coef(2, UBound(ROP_NBI, 2))[/u][/i][/b]

    'On croise les deux tableaux de coef ici:
    For i = LBound(ROP_NBI, 2) To UBound(ROP_NBI, 2)
        ROP_Coef(0, i) = ROP_NBI(0, i)
        ROP_Coef(1, i) = ROP_NBI(1, i)
        ROP_Coef(2, i) = ROP_OP(1, i)
    Next i

    For i = 0 To 3
        Worksheets("Retr RWA ROP by PC").Cells(17, 31 + i + k * 5).Value = Worksheets("Retr RWA ROP by PC").Cells(17, 6 + i + k * 5).Value
        Worksheets("Retr RWA ROP by PC").Cells(17, 31 + i + k * 5).ColumnWidth = 8.43
    Next i

    j = 17
    While Worksheets("Retr RWA ROP by PC").Cells(j, 5).Value <> ""
        For i = LBound(ROP_Coef, 2) To UBound(ROP_Coef, 2)
            If ROP_Coef(0, i) = Worksheets("Retr RWA ROP by PC").Cells(j, 3).Value Then
                'Gestion de la repartirion du ROP pour le PC O&R pour la vue EUR & AME
                'A mieux gérer: il écrit sur la ligne en dessous pour COTDPCA, ça fonctionne mias ça peut créer des bug à termes
                If ROP_Coef(0, i) = "COTDPC" Then
                     'COTDPC 60
                   Worksheets("Retr RWA ROP by PC").Cells(j, 32 + k * 5).Value = (0.5 * Worksheets("Retr RWA ROP by PC").Cells(17, 32 + k * 5).Value * (ROP_Coef(1, i) + ROP_Coef(2, i)))
                    Worksheets("Retr RWA ROP by PC").Cells(j, 33 + k * 5).Value = (Worksheets("Retr RWA ROP by PC").Cells(17, 33 + k * 5).Value * ROP_Coef(1, i))
                    Worksheets("Retr RWA ROP by PC").Cells(j, 34 + k * 5).Value = (0.5 * Worksheets("Retr RWA ROP by PC").Cells(17, 34 + k * 5).Value * (ROP_Coef(1, i) + ROP_Coef(2, i)))
                    Worksheets("Retr RWA ROP by PC").Cells(j, 31 + k * 5).Value = (Worksheets("Retr RWA ROP by PC").Cells(j, 32 + k * 5).Value + Worksheets("Retr RWA ROP by PC").Cells(j, 33 + k * 5).Value + Worksheets("Retr RWA ROP by PC").Cells(j, 34 + k * 5).Value)

                    'COTDPCA 40% (ligne en dessous)Les cellules supprimées ci dessous servent à effacer le doublon que l'on a sur COTDPC. Une meilleure solution peut être apporté à ce problème. Attention le COTEMGT peut être utilisé et donc les données peuvent être supprimées et pas prises en compte
                    Worksheets("Retr RWA ROP by PC").Cells(j, 31 + k * 5).Value = (Worksheets("Retr RWA ROP by PC").Cells(j, 32 + k * 5).Value + Worksheets("Retr RWA ROP by PC").Cells(j, 33 + k * 5).Value + Worksheets("Retr RWA ROP by PC").Cells(j, 34 + k * 5).Value)

                Else
                    Worksheets("Retr RWA ROP by PC").Cells(j, 32 + k * 5).Value = 0.5 * Worksheets("Retr RWA ROP by PC").Cells(17, 32 + k * 5).Value * (ROP_Coef(1, i) + ROP_Coef(2, i))
                    Worksheets("Retr RWA ROP by PC").Cells(j, 33 + k * 5).Value = Worksheets("Retr RWA ROP by PC").Cells(17, 33 + k * 5).Value * ROP_Coef(1, i)
                    Worksheets("Retr RWA ROP by PC").Cells(j, 34 + k * 5).Value = 0.5 * Worksheets("Retr RWA ROP by PC").Cells(17, 34 + k * 5).Value * (ROP_Coef(1, i) + ROP_Coef(2, i))
                    Worksheets("Retr RWA ROP by PC").Cells(j, 31 + k * 5).Value = Worksheets("Retr RWA ROP by PC").Cells(j, 32 + k * 5).Value + Worksheets("Retr RWA ROP by PC").Cells(j, 33 + k * 5).Value + Worksheets("Retr RWA ROP by PC").Cells(j, 34 + k * 5).Value
                End If
            End If
        Next i
        j = j + 1
    Wend

Next k

Worksheets("Retr RWA ROP by PC").Range("A1:BA100").Columns.AutoFit
Worksheets("Retr RWA ROP by PC").Range("F1:BZ100").ColumnWidth = 8.43

n'hésitez pas à me poser des questions si ce n'est pas clair : )merci

Bonjour,

Tu devrais plutôt simplement déclarer :

Dim ROP_Coef As Variant

sans les parenthèses

Pierre

salut Pierre merci pour ta réponse et ton intérêt ! : )

mais j'ai déjà essayé cette possibilité et j'ai toujours le même problème avec le même message d'erreur... : /

Une piste ...

Si ta première requête ne renvoie rien, ROP_NBI se trouve vide

Dans ce cas l'expression UBound(ROP_NBI, 2) renvoie une erreur.

Pierre

le truc c'est qu'elle n'est pas vide mais tu as raison en mettant le curseur dessus je vois apparaitre "empty"... j'investigue cette piste

Encore merci Pierre

Si qq d'autres a des éléments de réponses je suis preneur ! bonne journée a tous et bon courage c'est bientot le weekend :!

Bonjour,

tu as l'explication de ton problème, ton query SQL ne retourne aucune ligne, d'où le empty pour ROP_NBI. tu dois ajouter un test qui détecte que ROP_NBI est vide et faire le traitement en conséquence.

+1 avec H2so4

Ou tu peux aussi le remplir avec un tableau vide à 2 dimensions avant ton getrows :

Dim Tvide(0, 0)  As Variant

    Tvide(0, 0) = ""

    ROP_NBI = Tvide
    If Not rs.EOF Then
        ROP_NBI = rs.GetRows()
    ' etc ...

de cette façon tu es sûr que ton ROP_NBI possède bien 2 dimensions

Edit :

Au fait, tu peux également forcer le pointage sur le début des data avec un rs.MoveFirst

    rs.Open myreq, cn
    ROP_NBI = Tvide
    rs.MoveFirst
    If Not rs.EOF Then
' ... etc ...

Merci pour vos réponses mais je vais vous avouer un truc je comprends rien à vos réponses ahah

je fais mes recherches pour mieux les comprendre du coup ,)


ROP_NBI est "empty" dans le code mais j'ai bien des valeurs dans ma BDD

et quand on parle de dimension on parle de colonne ?

Rechercher des sujets similaires à "type mismatch ubound"