Connaître le nombre d'éléments d'un tableau?

Résolu
phantom_2005
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
- 22 déc. 2004 à 11:19
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
- 22 déc. 2004 à 20:22
bonjour,

comment puis-je faire pour déterminer le nombre d'éléments d'un tableau de taille inconnue?

Y a t il une fonction spécifique?

Mon tableau est construit comme suit:

MonTableau = Split(stTmp, vbCrLf)


je voudrais connaître le nombre d'éléments de MonTableau afin de le parcourir à l'aide d'une boucle For.

Merci de votre aide.
:)

9 réponses

horko
Messages postés
53
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
19 juillet 2005

22 déc. 2004 à 11:50
c est simple, tu fais :

dim i as long
i = (ubound(Montableau) - lbound(montableau))+1

i sera le nombre d élément dans ton tableau.
3
crenaud76
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
28
22 déc. 2004 à 13:14
liquide < Je comprend pas !! Tu recommande l'utilisation de lbound() -ce que j'approuve !!- et tu ne le fait pas dans ton ex de code !!
For i = LBound(Tableau) To UBound(Tableau)
' Bla Bla Bla ...
Next 

me semble la version la plus sécurisé !!

Christophe R.
3
phantom_2005
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
1
22 déc. 2004 à 11:59
Merci horko

j'ai enlevé le "+ 1" de l'expression car il me mettait indice excedant la taille du tableau.

:approve)
0
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

22 déc. 2004 à 12:51
salut, etant donné que le lbound d'un tableau est generalement à 0, si par hazard elle ne l'etait pas, il serait bien de la mettre, car lors de la compilation, il retranscrit sur une base 0.

i = ubound(tableau), dois suffir amplement

pour la boucle for

for i = 0 to ubound(tableau())-1

next i

Bonne prog, poele_a_frire@hotmail.com
liquide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

22 déc. 2004 à 15:53
je ne le fais pas car de base il est à 0. Si par ailleur il ne l'est pas, il serait peut etre bon de mettre l'option a 0, pour la simplification de tout le code a venir.

For i = LBound(Tableau) To UBound(Tableau)
' Bla Bla Bla ...
Next

me parait genant pour l'interieur de la boucle, , faire du (i-1) a l'interieur, juste une fois n'est pas trop genant, mais quand il y en à plusieurs, ca commence à etre chiant à coder.

...... pour ma part, :
For i = LBound(Tableau) To UBound(Tableau)
' Bla Bla Bla ...
Next

....... devient :
For i = LBound(Tableau) To UBound(Tableau)-1
' Bla Bla Bla ...
Next

....... et comme LBound(Tableau) = 0 (tout le temps)

.......ca devient :
for i = 0 to ubound(tableau())-1

next i

ma securité est sur la base 0, qui ne change jamais dans mon code, par principe. Jusque là je n'ai jamais eu derreur.

Bonne prog, poele_a_frire@hotmail.com
liquide
0
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

22 déc. 2004 à 15:58
ceci dit à la reflection, pour eviter un eventuel plantage, le lbound est la meilleure methode.

Bonne prog, poele_a_frire@hotmail.com
liquide
0
cs_rene38
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
11
22 déc. 2004 à 17:03
Bonjour tous
Juste un détail : le tableau proposé est obtenu par la fonction Split.
Or MSDN dit : " Split renvoie un tableau de base zéro"
(et ce, même si on a spécifié Option Base 1)
donc ...
0
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
22 déc. 2004 à 19:54
OK avec <rene38> pour le split.
Je rajouterai qu'en VB.NET, il n'y plus d'OPTION BASE, tous les tableaux commencent à 0.
Mais la solution de <horko> est toujours valable car (en dehors du split) je peux déclarer un tableau comme ça : dim tablo(5 to 10) si j'ai envie. Et hop j'ai 6 éléments dans mon tableau et non pas 10 ou 11.
Le For i = LBound(Tableau) To UBound(Tableau) .... de <crenaud76> est donc toujours d'actualité.

Enfin, c'est une question de feeling et surtout de maintenance du prog.

Cordialement, CanisLupus
0
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

22 déc. 2004 à 20:22
bon bin tout le monde est contre moi lol
tampis
Bonne prog, poele_a_frire@hotmail.com
liquide
0