[Résolu] Problème avec la fonction Ubound

Problème avec la fonction Ubound [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 15-10-2007 à 16:52:06    

Bonjour !
 
J'ai un tit soucis dans mon code...
En fait ce qu'il se passe, c'est que la fonction Ubound me retourne 0 alors qu'il y a bien une valeur dans le tableau... Mais bizarrement celà ne se produit pas tout le temps...
 
Voici le code :
 

Code :
  1. Type type_soc
  2.     lib As String
  3.     var As Currency
  4. End Type
  5. Type type_doc
  6.     rubrique As Integer
  7.     lib_rub As String
  8.     var_mens As Currency
  9.     ste() As type_soc
  10. End Type
  11. Dim tab_doc1() As type_doc
  12. Sub test()
  13. rassemblement Array("10", "11", "12" ), "10", "Capitaux propres", tab_doc1(), True
  14. End sub
  15. Sub rassemblement(tab_rub, rub_uni As Integer, lib_rub As String, tab_doc() As type_doc, soc_uni As Boolean)
  16. For i = 0 To UBound(tab_rub) - 1
  17.     i3 = -1
  18.     For i2 = 0 To UBound(tab_doc) - 1
  19.         If Len(tab_rub(i)) > 0 Then
  20.             If tab_rub(i) = Mid(tab_doc(i2).rubrique, 1, Len(tab_rub(i))) Then
  21.                 If i3 = -1 Then
  22.                     i3 = i2
  23.                     tab_doc(i3).rubrique = rub_uni
  24.                     tab_doc(i3).lib_rub = lib_rub
  25.                     If soc_uni = True Then tab_doc(i3).ste(0).lib = ""
  26.                     Else
  27.                     If i2 <> i3 Then tab_doc(i2).rubrique = 0
  28.                 End If
  29.                 MsgBox tab_doc(i2).ste(0).var
  30.                 If UBound(tab_doc(i2).ste) >= 1 Then
  31.                     For i4 = 0 To UBound(tab_doc(i2).ste) - 1
  32.                         If soc_uni = True Then
  33.                             If i4 > 0 And i2 <> i3 Then tab_doc(i3).ste(0).var = tab_doc(i3).ste(0).var + tab_doc(i2).ste(i4).var
  34.                             Else
  35.                             If i2 <> i3 Then
  36.                                 tab_doc(i3).ste(i4).lib = tab_doc(i3).ste(i4).lib + tab_doc(i2).ste(i4).lib
  37.                                 tab_doc(i3).ste(i4).var = tab_doc(i3).ste(i4).var + tab_doc(i2).ste(i4).var
  38.                             End If
  39.                         End If
  40.                     Next
  41.                 End If
  42.             End If
  43.         End If
  44.     Next
  45. Next


 
c'est à la ligne 35 qu'on voit le problème (lorsque j'utilise le dégogueur)
notament quand i2 = 30... alors qu'il y a bien une valeur dans le tableau "ste"... Strange !
 
Quelqu'un a une idée ?
 
Merci :)


Message édité par SkamakS le 16-10-2007 à 14:57:34
Reply

Marsh Posté le 15-10-2007 à 16:52:06   

Reply

Marsh Posté le 16-10-2007 à 14:57:09    

Cest bon, j'ai trouvé le problème ^^
C'était con en fait... j'croyais que Ubound comptait le nom d'élément... donc si y'en a un il aurait dû retourner 1 mais en fait il donne le numéro du dernier élément, vu que la numérotation commence par 0, s'il y a 1 élément, il retourne 0.
 
Voilà ^^
 
Merci quand même :D

Reply

Marsh Posté le 22-10-2007 à 18:49:41    

les fonctions Lbound et Ubound te renvoient les bornes inférieurs et superieures d'un tableau passé en paramètre ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed