Compter le nombre d'éléments dans un tableau

Signaler
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009
-
Messages postés
1
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
5 janvier 2010
-
bonjour à tous,
je développe une application en visual basic.
Dans cette appli, j'utilise un tableau de type

Type coef
    coef1 As Integer
    coef2 As Integer
    coef3 As Integer
    coef4 As Integer
End Type
Public t_coef As coef

ce tableau me sert a ajouter des éléments saisie dans une textbox. Lorsque que je clique sur un bouton, l'élément s'ajoute à mon tableau.
Pour compter le nombre d'éléments dans mon tableau, j'utilise une variable i. lorsque je clique sur le bouton je fais: i=i+1

J'aurai voulu savoir s'il n'y apas une manière plus simple pour compter le nombre d'élément dans un tableau
merci d'avance 

10 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Ce que tu nous montre n'est pas un tableau mais une structure. Et il n'est pas possible d'ajouter d'éléments à une structure lors de l'execution.

Doit-on comprendre que en fait tu as un tableau dont les éléments sont cette structure ?????

Dans tout les cas, tu trouvera le nombre d'éléménts du tableau par cette formule UBound(tableau) - LBound(tableau) + 1

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

Désoler, tu as raison.
Voici mon tableau

    Dim tableau(0 To 2, 0 To 9) As Integer
    Dim i As Integer
   
    Select Case Text2
        Case 1
            tableau(0, i) = Text1
            i = i + 1
        Case 2
            tableau(1, i) = Text1
            i = i + 1
        Case 3
            tableau(2, i) = Text1
            i = i + 1
    End Select

Suivant le chiffre sasi dans une texbox (text2), j'ajoute un élément dans le tableau a deux dimensions
J'aimerai savoir comment je peux faire pour savoir combien d'élément par ligne (tableau(0,i), tableau(1,i))
j'ai essayé la formule du dessus et le résultat est toujour égale a 3 pour les 3 lignes.

merci d'avance
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

Désoler, tu as raison.
Voici mon tableau

    Dim tableau(0 To 2, 0 To 9) As Integer
    Dim i As Integer
   
    Select Case Text2
        Case 1
            tableau(0, i) = Text1
            i = i + 1
        Case 2
            tableau(1, i) = Text1
            i = i + 1
        Case 3
            tableau(2, i) = Text1
            i = i + 1
    End Select

Suivant le chiffre sasi dans une texbox (text2), j'ajoute un élément dans le tableau a deux dimensions
J'aimerai savoir comment je peux faire pour calculer le nombre  d'élément présent dans chaque  ligne du tableau. c'est à dire pour la ligne 0 (tableau(0,i)) pour la ligne 1( tableau(1,i)), ...
j'ai essayé la formule du dessus et le résultat est toujour égale a 3 pour les 3 lignes.

merci d'avance
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Ok, j'avais mal compris. Je croyais que tu cherchais à avoir la taille du tableau, inutile ici puisque le tableau est de taille fixe.
Ma formule ne donne que la taille (totale) de la première dimention du tableau.

Pour compter le nombre d'éléments, pour l'instant, je ne vois pas d'autres solutions que ton code.
l'autre solution consisterait à passer chaque élément et a en comparer la valeur, mais elle ne serait pas plus judicieuse non plus.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

ok. merci quand même!!!
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Violent Ken

Possible de faire Uboudn sur un tableau dynamique pour avoir la taille.

Et au passage,

Select Case Text2
        Case 1
            tableau(0, i) = Text1
            i = i + 1
        Case 2
            tableau(1, i) = Text1
            i = i + 1
        Case 3
            tableau(2, i) = Text1
            i = i + 1
    End Select

se remplace par :

tableau(text2-1,i)=text1
i=i+1

et si Text2 estr une textbox, alors il ne faut pas mélanger les types, et faire Val(Text2.text)

@+
Messages postés
143
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2011

Hello une autre réponse:

Option Explicit


    Dim T1 As Integer
    Dim T2 As Integer
    Dim T3 As Integer
    Dim Test2 As Integer
    Dim tableau(1 To 3, 1 To 9) As Integer
Private Sub Form_Load()
   
    T1 = 1
    T2 = 1
    T3 = 1
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
 End Sub


Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Test2 = 1
Test_TextBox (Test2)
End Sub


Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
Test2 = 2
Test_TextBox (Test2)
End Sub


Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
Test2 = 3
Test_TextBox (Test2)
End Sub


Public Sub Test_TextBox(Test2 As Integer)


    Select Case Test2
        Case 1
            tableau(1, T1) = Val(Text1.Text)
            T1 = T1 + 1
        Case 2
            tableau(2, T2) = Val(Text2.Text)
            T2 = T2 + 1
        Case 3
            tableau(3, T3) = Val(Text3.Text)
            T3 = T3 + 1
    End Select


   MsgBox T1 & "  " & T2 & "  " & T3
   
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""


End Sub

Avec trois TextBox au nom voir text dans la form. Voila mon interpretation de votre text (programme).

A plus sur le Site VBFrance
42wawa42
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

merci pour vos diverses réponses.
malheureusement, je n'ai qu'une textbox donc je ne paux appliquer ton code 42wawa42.


par contre, j'ai essayé la méthode UBoudn mais le résultat est toujours égale à 3 (surement parce que j'ai 3 lignes).


merci d'avance
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Ubound peu prendre en parametre la dimention dont tu cherches le plus grand indice.
MSDN Dit:
Renvoie une valeur de type
<object id= "alink_4" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_4.Click() Long] contenant le plus grand indice
disponible pour la dimension indiquée d'un
<object id="alink_5" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_5.Click() tableau].

Syntaxe

UBound( arrayname [, dimension])

La syntaxe de la fonction UBound comprend les éléments suivants :

Élément, Description, ----
arrayname, Nom de la
<object id ="alink_6" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>Ju£i?n</italique>
Pensez: Réponse acceptée
Messages postés
1
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
5 janvier 2010

salut j'ai un probleme et j'ai pas de solution
en fait je n'arrive pas a trouver l'instruction sous vb 2005 qui me permettra de compter le nombre total d'enregistrement dans un fichier
merci d'avance

S.E.M