Dimension d'un tableau

Résolu
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 - 11 août 2005 à 09:28
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 - 11 août 2005 à 11:40
Bonjour,

Une question toute simple:
J'ai un tableau que je déclare au départ sans lui fixer de dimension (utilisation de la fonction Split). J'aimerais savoir comment connaître le nombre d'éléments du tableau lorsque l'on ne lui déclare pas de dimension ???

Merci d'avance !

8 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
11 août 2005 à 09:46
Salut,

Il faut utiliser la fonction Ubound qui renvoie le numéro du dernier indice utilisé du tableau :
var = "ab;cd;ef"
tab = split(var,";")
count=ubound(tab) + 1 'car le tableau de n éléments va de 0 à n-1, donc ubound renvoie n-1
> count 3
3
fcampagne Messages postés 195 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 13 juillet 2006 3
11 août 2005 à 09:47
Tu as la méthodes lenght qui te retourne le nombre d'élément dans un tableau.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 août 2005 à 09:52
La fonction Length, c'est en .Net ^^

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
11 août 2005 à 10:40
Merci j'ai appris quelquechose !

Et comment (je sais j'abuse) supprimer un élément du tableau, je m'exlique :

j'ai un tableau de 5 éléments
Dim tab(5) as String

et je veux par exemle supprimer l'élément tab(4), donc il faudra que l'ancien tab(5) devienne le nouveau tab(4) !!

Une idée?
0

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

Posez votre question
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
11 août 2005 à 10:50
Tu dois d'abord faire une boucle pour décaler tous tes éléments
l_Tab(4)=l_Tab(5)
l_Tab(5)=l_Tab(6) ....

Ensuite pour supprimer le dernier élément il faut utiliser
ReDim Preserve l_Tab(UBound(l_Tab) - 1)

Ce qui signifie :
ReDim : redimensionne le tableau
Preserve : en conservant les données déjà existantes
l_Tab(UBound(l_Tab) - 1) : à son indice le plus grand -1

Cette manipulation n'est possible que si tu déclares ton tableau dynamiquement (ce qui est déjà nécessaire pour utiliser la fonction Split)
<STRIKE>Dim l_tab(5) as String </STRIKE>-> Dim l_tab() as String
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
11 août 2005 à 11:03
D'acoord, mais si tu veux supprimer l'élément 2 du tableau qui n'est pas avant dernier ??

Merci pour tes réponses !
0
fcampagne Messages postés 195 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 13 juillet 2006 3
11 août 2005 à 11:21
Le plus simple est de faire une fonction qui te vide la case X de ton
tableau, décale toutes les autres case et redimensione le tableau a sa
taille -1

ça doit forcément exister quelques part ce genre de fonction!!!
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
11 août 2005 à 11:40
Bah si elle esxiste je la connais pas mais je me suis débrouillé avec du code :

If (InStr(1, LblChaine.Caption, "-") <> 0) Then
tableau = Split(CStr(LblChaine.Caption), "-")
tableau2 = tableau

For i = 0 To UBound(tableau)
If (tableau(i) = Mid(List2, 1, InStr(1, List2, "-") - 1)) Then
For j = i + 1 To UBound(tableau)
tableau2(j - 1) = tableau2(j)
Next j
ReDim Preserve tableau2(UBound(tableau) - 1)

End If
Next i
LblChaine.Caption = Join(tableau2, "-")
Else
LblChaine.Caption = ""
End If
List2.RemoveItem (List2.ListIndex)
List2.Refresh
0
Rejoignez-nous