---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 dimensinos 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 ***********