IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Pb tableau 2D : indice en dehor de la plage


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Points : 61
    Points
    61
    Par défaut [VB6] Pb tableau 2D : indice en dehor de la plage
    Bonjour,
    Je cherche à travailler sur un tableau à 2 dimensions qui fait parti d'un type utilisateur, voici un code qui met en evidence mon probleme.
    En effet, le tableau MyzTab.Tab2D se remplit bien (je peux voir les valeur dans la fenetre espion) mais impossible d'accéder au valeur par MyzTab.Tab2D(i,j). Je ne comprend pas pourquoi ? ? ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Option Explicit
     
    Private Const NB_LIGNE = 4
    Private Const NB_COLONNE = 400
     
    'TYPE UTILISATEUR
    Private Type zTab
        Tab2D() As Double
    End Type
     
    Dim MyzTab As zTab
     
     
    'CHARGEMENT DU FORMULAIRE
    Private Sub Form_Load()
        Dim i, j As Integer
     
        ReDim MyzTab.Tab2D(NB_LIGNE - 1, NB_COLONNE - 1)
     
        'Initialise le tableau
        For i = 0 To UBound(MyzTab.Tab2D)
            For j = 0 To NB_COLONNE - 1
                MyzTab.Tab2D(i, j) = CDbl(CStr(i) & "." & Format(CStr(j), "000"))
            Next j
        Next i
    End Sub
     
    'CLIQUE SUR LE BOUTON
    Private Sub Command1_Click()
        ShowInList MyzTab.Tab2D
    End Sub
     
    'FONCTION QUI AFFICHE LES ELEMENTS DU TABLEAU DANS LA LISTBOX
    Public Sub ShowInList(ByRef zTab2D() As Double)
        Dim i, j As Integer
     
        For i = LBound(zTab2D) To UBound(zTab2D)
            'Erreur à la compilation sur LBound : Tableau attendu ? ? ?
            For j = LBound(zTab2D(i)) To UBound(zTab2D(i))
                List1.AddItem zTab2D(j, i)
            Next j
        Next i
     
        '-------------------------------------------------------------------------------------
        'Expression             | Valeur                            | par type
        '-------------------------------------------------------------------------------------
        '- zTab2D               |                                   | Double(0 to 3,0 to 399)
        '  + zTab2D(0)          |                                   | Double(0 to 399)
        '  + zTab2D(1)          |                                   | Double(0 to 399)
        '  + zTab2D(2)          |                                   | Double(0 to 399)
        '  - zTab2D(3)          |                                   | Double(0 to 399)
        '      zTab2D(3,0)      | 3                                 | Double
        '      zTab2D(3,0)      | 3.001                             | Double
        '      zTab2D(3,0)      | 3.002                             | Double
        '      zTab2D(3,0)      | 3.003                             | Double
        '           .           |   .                               |    .
        '           .           |   .                               |    .
        '           .           |   .                               |    .
        '      zTab2D(3,397)    | 3.397                             | Double
        '      zTab2D(3,398)    | 3.398                             | Double
        '      zTab2D(3,399)    | 3.399                             | Double
        'IsArray(zTab2D)        | Vrai                              | Boolean
        'IsArray(zTab2D(0))     | <Indice en dehors de la plage>    | Integer
        '-------------------------------------------------------------------------------------
     
    End Sub

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Dans la ligne
    i est declaré comme un variant, a remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim i As Intege,J as Integer
    Petitet erreur egalement dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For j = LBound(zTab2D(i)) To UBound(zTab2D(i))
    A remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For j = LBound(zTab2D) To UBound(zTab2D)

    je n'ai pas vb sous la main pour tester ton source, donc je ne garantis rien
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    zTab2D est un tableau à 2 dimensions (ici 4 x 400)
    For j = LBound(zTab2D) To UBound(zTab2D)
    Ce code me donne la taille de la première dimension càd 4-1=3 alors que je souhaite connaitre la taille de la deuxieme dimension càd 400-1=399, c'est pourquoi j'utilise
    For j = LBound(zTab2D(i)) To UBound(zTab2D(i))
    en ayant declararé j comme integer, j'ai toujours le même probleme

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Oups, désolé
    La syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For j = LBound(zTab2D,1) To UBound(zTab2D,2)
    le ,1 pour le premier incide et le ,2 pour le second
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  5. #5
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239

Discussions similaires

  1. Indice en dehors de la plage (erreur 9)
    Par Polotaz dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/01/2012, 12h43
  2. Indice en dehors de la plage
    Par Mocodo dans le forum VBScript
    Réponses: 2
    Dernier message: 16/01/2010, 14h53
  3. "Erreur d'exécution '9'. Indice en dehors de la plage"
    Par bassiste dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/12/2008, 13h40
  4. [VB6]Err 9 - Indice en dehors de la plage
    Par Misha dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/11/2008, 18h34
  5. Indice en dehors de la plage
    Par Neuromancien2 dans le forum ASP
    Réponses: 3
    Dernier message: 15/06/2007, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo