Connaître le nombre d'éléments d'un tableau? [Résolu]

Signaler
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
-
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
-
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

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

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 113 internautes nous ont dit merci ce mois-ci

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
21
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 113 internautes nous ont dit merci ce mois-ci

Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
1
Merci horko

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

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

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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

ceci dit à la reflection, pour eviter un eventuel plantage, le lbound est la meilleure methode.

Bonne prog, poele_a_frire@hotmail.com
liquide
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
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 ...
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
14
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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

bon bin tout le monde est contre moi lol
tampis
Bonne prog, poele_a_frire@hotmail.com
liquide