OVH Cloud OVH Cloud

nombre de dimensions d'un tableau

8 réponses
Avatar
pierref
bonjour

y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)

merci d'avance

pierref

8 réponses

Avatar
AV
y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)


Mais encore ?
Un exemple de situation et de résultat attendu ?

AV

Avatar
pierref
heu par ex :

tu declares en deb de prog

dim tab(1 to x, 1 to y) ---> 2 dimensions

admettons que le nb de dimensions du tableau augmente dans
le prog, je voudrais savoir combien il en possede a la fin.


merci et a+

pierref



-----Message d'origine-----
y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)


Mais encore ?
Un exemple de situation et de résultat attendu ?

AV


.




Avatar
michdenis
Bonjour Pierre,

Tu peux utiliser cette fonction :

'--------------------------
Function Dimension(Tblo As Variant)

Dim S As Variant
On Error Resume Next
For a = 1 To 100000
S = UBound(Tblo, a)
If Err <> 0 Then
Dimension = a - 1
Err = 0: Exit For
End If
Next

End Function
'--------------------------


Pour appeler cette fonction dans une procédure:

'-------------------------
Sub LeTableau()
Dim Nd As Integer
Dim Tblo()
ReDim Tblo(0 To 1, 15 To 25)
Nd = Dimension(Tblo)
MsgBox Nd & " dimensions."
End Sub

'-------------------------


Salutations!




"pierref" a écrit dans le message de news:09a301c3cee9$1787bf60$
bonjour

y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)

merci d'avance

pierref
Avatar
pierre
merci et bonne année

-----Message d'origine-----
Bonjour Pierre,

Tu peux utiliser cette fonction :

'--------------------------
Function Dimension(Tblo As Variant)

Dim S As Variant
On Error Resume Next
For a = 1 To 100000
S = UBound(Tblo, a)
If Err <> 0 Then
Dimension = a - 1
Err = 0: Exit For
End If
Next

End Function
'--------------------------


Pour appeler cette fonction dans une procédure:

'-------------------------
Sub LeTableau()
Dim Nd As Integer
Dim Tblo()
ReDim Tblo(0 To 1, 15 To 25)
Nd = Dimension(Tblo)
MsgBox Nd & " dimensions."
End Sub

'-------------------------


Salutations!




"pierref" a écrit
dans le message de news:09a301c3cee9$1787bf60

$
bonjour

y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)

merci d'avance

pierref


.



Avatar
Frédéric Sigonneau
Bonjour Denis,

Une autre approche possible, qui évite de fixer 'en dur' la limite supérieure de
la boucle (même si la limite que tu as retenue a bien peu de chances d'être un
jour dépassée !..) :

'=============== Function Dimension(Tblo As Variant)
Dim S As Variant, a

On Error Resume Next
a = 1
Do
S = UBound(Tblo, a)
a = a + 1
Loop While Err = 0
Err.Clear
Dimension = a - 2

End Function
'================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour Pierre,

Tu peux utiliser cette fonction :

'--------------------------
Function Dimension(Tblo As Variant)

Dim S As Variant
On Error Resume Next
For a = 1 To 100000
S = UBound(Tblo, a)
If Err <> 0 Then
Dimension = a - 1
Err = 0: Exit For
End If
Next

End Function
'--------------------------

Pour appeler cette fonction dans une procédure:

'-------------------------
Sub LeTableau()
Dim Nd As Integer
Dim Tblo()
ReDim Tblo(0 To 1, 15 To 25)
Nd = Dimension(Tblo)
MsgBox Nd & " dimensions."
End Sub

'-------------------------

Salutations!

"pierref" a écrit dans le message de news:09a301c3cee9$1787bf60$
bonjour

y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)

merci d'avance

pierref


Avatar
michdenis
Bonjour Frédéric,


"même si la limite que tu as retenue a bien peu de chances d'être un jour dépassée"

J'y croyais si peu que j'ai utilisé une variable de type Integer pour boucler jusqu'à 100000 !!!

;-)

Effectivement, ta proposition offre une alternative intéressante.

Merci.


Salutations!



"Frédéric Sigonneau" a écrit dans le message de news:
Bonjour Denis,

Une autre approche possible, qui évite de fixer 'en dur' la limite supérieure de
la boucle (même si la limite que tu as retenue a bien peu de chances d'être un
jour dépassée !..) :

'=============== Function Dimension(Tblo As Variant)
Dim S As Variant, a

On Error Resume Next
a = 1
Do
S = UBound(Tblo, a)
a = a + 1
Loop While Err = 0
Err.Clear
Dimension = a - 2

End Function
'================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour Pierre,

Tu peux utiliser cette fonction :

'--------------------------
Function Dimension(Tblo As Variant)

Dim S As Variant
On Error Resume Next
For a = 1 To 100000
S = UBound(Tblo, a)
If Err <> 0 Then
Dimension = a - 1
Err = 0: Exit For
End If
Next

End Function
'--------------------------

Pour appeler cette fonction dans une procédure:

'-------------------------
Sub LeTableau()
Dim Nd As Integer
Dim Tblo()
ReDim Tblo(0 To 1, 15 To 25)
Nd = Dimension(Tblo)
MsgBox Nd & " dimensions."
End Sub

'-------------------------

Salutations!

"pierref" a écrit dans le message de news:09a301c3cee9$1787bf60$
bonjour

y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)

merci d'avance

pierref


Avatar
Clément Marcotte
Bonjour,

J'y croyais si peu que j'ai utilisé une variable de type Integer
pour boucler jusqu'à 100000 !!!


Mais non, ton a n'est pas défini, il est donc du type Variant par
défaut. Ceci dit, reste à savoir si les opérations de transtypage de
VBA en auraient fait un type Long ou un type Integer. Là, je ne sais
pas si VBA est assez intelligent pour déterminer le type interne en
fonction de la valeur maximale qu'elle pourrait atteindre.

Va falloir tester ça un jour.




"michdenis" a écrit dans le message de
news:
Bonjour Frédéric,


"même si la limite que tu as retenue a bien peu de chances d'être un
jour dépassée"



;-)

Effectivement, ta proposition offre une alternative intéressante.

Merci.


Salutations!



"Frédéric Sigonneau" a écrit dans le
message de news:

Bonjour Denis,

Une autre approche possible, qui évite de fixer 'en dur' la limite
supérieure de

la boucle (même si la limite que tu as retenue a bien peu de chances
d'être un

jour dépassée !..) :

'=============== > Function Dimension(Tblo As Variant)
Dim S As Variant, a

On Error Resume Next
a = 1
Do
S = UBound(Tblo, a)
a = a + 1
Loop While Err = 0
Err.Clear
Dimension = a - 2

End Function
'================ >
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour Pierre,

Tu peux utiliser cette fonction :

'--------------------------
Function Dimension(Tblo As Variant)

Dim S As Variant
On Error Resume Next
For a = 1 To 100000
S = UBound(Tblo, a)
If Err <> 0 Then
Dimension = a - 1
Err = 0: Exit For
End If
Next

End Function
'--------------------------

Pour appeler cette fonction dans une procédure:

'-------------------------
Sub LeTableau()
Dim Nd As Integer
Dim Tblo()
ReDim Tblo(0 To 1, 15 To 25)
Nd = Dimension(Tblo)
MsgBox Nd & " dimensions."
End Sub

'-------------------------

Salutations!

"pierref" a écrit dans le
message de news:09a301c3cee9$1787bf60$


bonjour

y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)

merci d'avance

pierref







Avatar
michdenis
Bonsoir Clément,

Tu as bien raison. Je n'ai pas pris le temps de regarder la fonction que j'avais écrite, j'étais sûr que j'avais défini la
variable As integer !

;-)

Un peu de repos ... cela va être salutaire !


Salutations!


"Clément Marcotte" a écrit dans le message de news:
Bonjour,

J'y croyais si peu que j'ai utilisé une variable de type Integer
pour boucler jusqu'à 100000 !!!


Mais non, ton a n'est pas défini, il est donc du type Variant par
défaut. Ceci dit, reste à savoir si les opérations de transtypage de
VBA en auraient fait un type Long ou un type Integer. Là, je ne sais
pas si VBA est assez intelligent pour déterminer le type interne en
fonction de la valeur maximale qu'elle pourrait atteindre.

Va falloir tester ça un jour.




"michdenis" a écrit dans le message de
news:
Bonjour Frédéric,


"même si la limite que tu as retenue a bien peu de chances d'être un
jour dépassée"



;-)

Effectivement, ta proposition offre une alternative intéressante.

Merci.


Salutations!



"Frédéric Sigonneau" a écrit dans le
message de news:

Bonjour Denis,

Une autre approche possible, qui évite de fixer 'en dur' la limite
supérieure de

la boucle (même si la limite que tu as retenue a bien peu de chances
d'être un

jour dépassée !..) :

'=============== > Function Dimension(Tblo As Variant)
Dim S As Variant, a

On Error Resume Next
a = 1
Do
S = UBound(Tblo, a)
a = a + 1
Loop While Err = 0
Err.Clear
Dimension = a - 2

End Function
'================ >
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour Pierre,

Tu peux utiliser cette fonction :

'--------------------------
Function Dimension(Tblo As Variant)

Dim S As Variant
On Error Resume Next
For a = 1 To 100000
S = UBound(Tblo, a)
If Err <> 0 Then
Dimension = a - 1
Err = 0: Exit For
End If
Next

End Function
'--------------------------

Pour appeler cette fonction dans une procédure:

'-------------------------
Sub LeTableau()
Dim Nd As Integer
Dim Tblo()
ReDim Tblo(0 To 1, 15 To 25)
Nd = Dimension(Tblo)
MsgBox Nd & " dimensions."
End Sub

'-------------------------

Salutations!

"pierref" a écrit dans le
message de news:09a301c3cee9$1787bf60$


bonjour

y a t'il une fonction en vba permettant de connaitre le
nombre de dimensions d'un tableau ?
(pas le nb de lignes ni de colonnes...)

merci d'avance

pierref