Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

Modules: Déterminer le nombre de dimensions d'une structure dimensionnée

Author(s)
Lyle Fairfield

---Soumis par Lyle Fairfield---

Déterminer le nombre de dimensions d'une structure dimensionnée.

    Il n'y a pas de façon directe pour obtenir le nombre de dimensions d'un  Array en VBA.  À ne pas confondre avec la valeur retournée par  UBound qui nous renseigne sur la valeur la plus élevée que peut prendre un indice, pour une dimension spécifiée.

    Une façon de déterminer le nombre de dimensions, le nombre d'indices, c'est de commencer ave LBound et de continuer à augmenter le nombre de dimensions jusqu'à ce qu'une erreur survienne. Le nombre de dimensions est alors un de moins que celui où l'erreur s'est produite. La technique est décrite dans la base de connaissance:

XL: Determining the Number of Dimensions in an Array Variable
Article ID: Q152288

   Un façon plus compliquée est d'obtenir le  SAFEARRAY que VBA crée internement pour la variable et alors d'utiliser la fonction API  RTLMoveMemory pour en déterminer le nombre de dimensions.

   Un façon plus sécuritaire est d'utiliser le code suivant:

'************ Code Start **********
 Function ElementCount(b As Variant) As Long
    Dim v As Variant, z As Long
    For Each v In b
        z = z + 1
    Next v
    Do
        ElementCount = ElementCount + 1
        z = z / (UBound(b, ElementCount) - LBound(b, ElementCount) + 1)
    Loop Until z = 1
 End Function

Sub testArray()
 Dim a(3 To 9, 4 To 7, 0, 1 To 12) As Variant, b As Variant
 Dim varReturn As Long
    b = a
    varReturn = fDummy(b)
    MsgBox varReturn
 End Sub

 Function fDummy(b As Variant) As Long
    fDummy = ElementCount(b)
 End Function
'********** Code End ***********

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer