Remplir des texbox a partir d'un tableau [Résolu]

Messages postés
8
Date d'inscription
dimanche 16 octobre 2016
Statut
Membre
Dernière intervention
18 octobre 2016
- - Dernière réponse : atahriz
Messages postés
8
Date d'inscription
dimanche 16 octobre 2016
Statut
Membre
Dernière intervention
18 octobre 2016
- 17 oct. 2016 à 17:33
bnj, je suis un amateur de vb
je viens de crée un tableau pour calculer et vérifier un chiffre pour chaque mois
et je veux afficher les résultats dans des textbox a partir du tableau déjà remplis
la seul solution que j'ai trouvé c'est de les affichés un par un, mais c'est trop long
est ce quil ya une solution SVP
voici mon code qui marche mais long
---------------------------
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim GH(11, 1) As String
GH(0, 0) = h01moy
GH(1, 0) = h02moy
GH(2, 0) = h03moy
GH(3, 0) = h04moy
GH(4, 0) = h05moy
GH(5, 0) = h06moy
GH(6, 0) = h07moy
GH(7, 0) = h08moy
GH(8, 0) = h09moy
GH(9, 0) = h10moy
GH(10, 0) = h11moy
GH(11, 0) = h12moy
' verification de GH
For i As Integer = 0 To 11
If GH(i, 0) <= 30 Then GH(i, 1) = 1
If GH(i, 0) > 30 And GH(i, 0) <= 50 Then GH(i, 1) = 2
If GH(i, 0) > 50 And GH(i, 0) < 70 Then GH(i, 1) = 3
If GH(i, 0) >= 70 Then GH(i, 1) = 4
Next
GHjan.Text = GH(0, 1)
GHfeb.Text = GH(1, 1)
GHmar.Text = GH(2, 1)
GHapr.Text = GH(3, 1)
GHmay.Text = GH(4, 1)
GHjun.Text = GH(5, 1)
GHjul.Text = GH(6, 1)
GHaug.Text = GH(7, 1)
GHsep.Text = GH(8, 1)
GHoct.Text = GH(9, 1)
GHnov.Text = GH(10, 1)
GHdec.Text = GH(11, 1)
End Sub
--------------------------------------------
Afficher la suite 

Votre réponse

5 réponses

Messages postés
13298
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 mai 2019
358
0
Merci
Qu'est ce qui est long?
Commenter la réponse de Whismeril
Messages postés
8
Date d'inscription
dimanche 16 octobre 2016
Statut
Membre
Dernière intervention
18 octobre 2016
0
Merci
le long c'est affecter chaque fois a une textbox la valeur a afficher
parce que c'est un grand programme
ce n’est que le début
Commenter la réponse de atahriz
Messages postés
13298
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 mai 2019
358
0
Merci
Ok,

Deux options
  • au lieu d'un tableau à plusieurs dimensions, tu crées une classe adaptée à ton besoin.

Tu mets autant d'instances de cette classe que nécessaire dans une List(of ) et tu bindes le tout dans un contrôle plus adapté (listbox, datagridview...)
Voir ici un exemple de binding
  • tu conserves ton principe, et tu instances des textbox pendant l'exécution. Pour savoir comment est initialisé un textbox dans le code d'un Form, tu tapes Public Sub New() et entrée.

Ça va t'afficher le constructeur qui par défaut est caché en VB.net.
Sélectionne InitializeComponent, fais un click droit et Atteindre la définition. Ça va t'amener dans le code que Visual Studio écrit pour toi à chaque contrôle que tu poses sur un Form, tout ce qui est nécessaire pour placer un textBox s'y trouve.

Note que .Net offre des outils plus performants que les tableaux. La list(of ) est le plus simple. Elle permet d'ajouter, supprimer, déplacer des éléments sans jamais se soucier de la taille de la collection. Elle permet toutes sortes de requêtes grâce à Linq (les tableaux aussi, mais pas aisément en multidimension).
Le binding te permet quand à lui toute la partie laborieuse d'affectation de données à des contrôles.
atahriz
Messages postés
8
Date d'inscription
dimanche 16 octobre 2016
Statut
Membre
Dernière intervention
18 octobre 2016
-
merci beaucoup pour votre aide
Commenter la réponse de Whismeril
Messages postés
8
Date d'inscription
dimanche 16 octobre 2016
Statut
Membre
Dernière intervention
18 octobre 2016
0
Merci
merci Whismeril pour votre conseil
c'est plus facile en utilisant la listview
un seule code pour remplir toute une colonne
super
-------------
reste une petite question est ce qu'on peut lire des données a partir de la listview?
------------------
Dim GH(11, 1) As String
GH(0, 0) = h01moy
GH(1, 0) = h02moy
GH(2, 0) = h03moy
GH(3, 0) = h04moy
GH(4, 0) = h05moy
GH(5, 0) = h06moy
GH(6, 0) = h07moy
GH(7, 0) = h08moy
GH(8, 0) = h09moy
GH(9, 0) = h10moy
GH(10, 0) = h11moy
GH(11, 0) = h12moy
' verification de GH
For i As Integer = 0 To 11
If GH(i, 0) <= 30 Then GH(i, 1) = 1
If GH(i, 0) > 30 And GH(i, 0) <= 50 Then GH(i, 1) = 2
If GH(i, 0) > 50 And GH(i, 0) < 70 Then GH(i, 1) = 3
If GH(i, 0) >= 70 Then GH(i, 1) = 4
'remplir la liste
Dim ghx As New ListViewItem(i + 1)
ghx.SubItems.Add(GH(i, 1))
Listview1.Items.Add(ghx)
vb95
Messages postés
1865
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
19 mai 2019
65 -
Bonjour
oui on le peut heureusement
Mais il faut se mettre dans la tête que la Listview est un contrôle qui sert à afficher ou à savoir quelle ligne on a cliqué .
Etant donné que tu as rempli ta listview avec un tableau, une list (of XXXX) ou tout autre chose comme structure autant lire ce tableau ou cette list(of XXXXX) ou cette structure
Si tu sélectionnes la ligne 3 par exemple c'est la 4° ligne dans ton tableau ( attention on compte à partir de 0 en VB net )
Commenter la réponse de atahriz
Messages postés
13298
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 mai 2019
358
0
Merci
Oui, on peut lire des données à partir de n'importe quel contrôle.
Mais il est plus judicieux d'avoir les avoir stockées dans une collection et de ne se servir du contrôle que pour l'affichage et l'interaction avec l'utilisateur.


Je m'explique, si tu dois manipuler des nombres, pour les afficher il faut les convertir en texte, puisqu'un contrôle affiche du texte.
Ensuite tu vas reprendre la donnée pour en faire un calcul, il te faut reconvertir en nombre, et ensuite convertir le résultat en texte, ect....
Si tu utilises le binding, ces étapes de conversions sont transparentes pour toi, car tu travailles sur la collection et c'est le binding qui affiches. Attention, le binding avec un Listview c'est pas le pied, il.est plus aisé de prendre une listbox ou un datagridview.

Allons plus loin, tes nombres sont des distances en cm qui arrivent toutes les 5 secondes. Pendant l'acquisition, tu veux détecter les valeurs aberrantes, tu les affiches donc en cm arrondies à l'entier le plus proche. Mais après, tu veux pouvoir regarder les millimètres dans les détails.
Si tu n'as que ta listview arrondie, c'est mort, si tu as une collection, avec la valeur brute et un binding qui arrondi au moment de l'affichage tu peux rejouer te mesures comme tu veux.
vb95
Messages postés
1865
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
19 mai 2019
65 -
Salut Whis : on se croise
Whismeril
Messages postés
13298
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 mai 2019
358 > vb95
Messages postés
1865
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
19 mai 2019
-
Salut Vb, et oui
atahriz
Messages postés
8
Date d'inscription
dimanche 16 octobre 2016
Statut
Membre
Dernière intervention
18 octobre 2016
-
merci, c'est resolu
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.