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.43n'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 Variantsans 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 ?