romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011
-
5 avril 2009 à 16:02
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 2016
-
8 avril 2009 à 22:59
Bonjour,
Connaissez-vous un moyen d'automatiser une fonction ?
Je vous explique.. j'ai des données dans un tableau à 2 dimensions -> Tabdonnees(Années,Pays).
J'ai mi les années dans un combobox, et je voudrai qu'en cliquant sur une année, il m'affiche dans des textbox le chiffre correspondant à chaque pays.
Sauf que j'ai 29 Pays...
Ce qui m'oblige à écrire (si possible avec un Select Case):
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
'
'
Dim i As Integer = ComboBox1.SelectedIndex
Select i
Case 0
TextBox1.Text = Tabdonnees(1, 1)
TextBox2.Text = Tabdonnees(1, 2)
TextBox3.Text = Tabdonnees(1, 3)
TextBox4.Text = Tabdonnees(1, 4)
...
Case 1
TextBox1.Text = Tabdonnees(1, 1)
TextBox2.Text = Tabdonnees(1, 2)
TextBox3.Text = Tabdonnees(1, 3)
TextBox4.Text = Tabdonnees(1, 4)
...
End Select
End Sub
Mais j'ai 16 années (donc 16 cas) et 29 pays !!
Donc je voudrais savoir comment automatiser cette commande.. j'ai tenté ceci :
Dim i As Integer = ComboBox1.SelectedIndex
Select i
Case 0
For Each num As Integer
TextBox(num).Text = Tabdonnees(1, num)
Next num
End Select
Mais il souligne "Integer".. et.; bah je suis coincé.
De même le premier indice, je me dit que c'est Case + 1..
Ca donnerait quelque chose comme ca :
Case 0 To 16
For Each num As Integer
TextBox(num).Text = Tabdonnees(Case+1, num)
Next num
Mais bon, c'est pareil je ne sais pas comment écrire ça.
Si jamais quelqu'un a une idée elle est la bienvenue !
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 5 avril 2009 à 16:44
En supposant que tes textbox soient posés directement sur la form, et non pas sur un panel ou groupbox, ....
En supposant que ton tableau Année va de 1 à 16 et non pas de 0 à 15
En supposant que ton tableau Pays va de 1 à 29 et non pas de 0 à 28
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim i As Integer = ComboBox1.SelectedIndex +1
For j as integer = 1 to 29
Me.Controls("TextBox" & j.ToString).Text = Tabdonnees(i, j)
next
End Sub
romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011 5 avril 2009 à 17:02
Arf.; ca ne fonctionne pas.
Je me suis mal expliqué, désolé !
Mon tableau est à double dimension, ca donne :
Année Allemagne Autriche .... Suède
1991 142 201 87
1992
1993
...
2006
Et je me suis trompé ! il y a bien 16 lignes ("Année" + les 15 ans)
(mais j'ai mi que les 15 années dans le Combobox.. donc y'a 15 item)
mais il n'y a que 28 colonnes ("Année" + les 27 pays de l'UE)
Voilà.. désolé mon énoncé manquait de précision.
Du coup si je sélectionne 1991 (1er item du Combobox) il me faut :
dans le textbox1 : Tabdonnees (1,1)
dans le textbox1 : Tabdonnees (1,2)
dans le textbox1 : Tabdonnees (1,3)
...
Tu crois que tu pourrais me redonner des lignes des codes en prenant en compte ceci ???
Pendant ce temps là.. jvé "tenter" de trouver la solution..
romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011 5 avril 2009 à 17:22
Oui c'est vrai, désolé.. j'ai... "tenté" ! :)
Et... euh.. Excuses moi je te dérange encore...
Si je veux afficher dans un enième TextBox la moyenne des 27 chiffres, je fais comment ?
Moi évidemment j'ai :
Somme = TextBox1 + Text Box 2....+ text Box 27
Moyenne = Somme / 27
TextBox30.Text = Moyenne
mais.. en automatisé ca donne quoi ??
Et pareil.. j'ai un bouton à côté.. jveu qu'en cliquant dessus, mon PictureBox affiche le graphique associé à l'année (j'ai fai les 15, je les ai enregistrés en image sous le nom "1991.jpg" , "1992.jpg")
Jme di qu'on doit pouvoir aussi faire une boucle genre :
Button_Click
Dim i As Integer = ComboBox1.SelectedIndex + 1990
picture.Load(i.ToString).jpg
qu'en pesnes-tu ?
dsl.. j'dois te saouler avec toutes mes questions.. !
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 5 avril 2009 à 17:31
Toujours dans la même boucle :
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim i As Integer = ComboBox1.SelectedIndex +1
Dim somme as Integer
For j as integer = 1 to 29
Me.Controls("TextBox" & j.ToString).Text = Tabdonnees(i, j)
somme += Tabdonnees(i,j)
next
TextBox30.Text = (somme/27).ToString
End Sub
.....
picture.Load(i.ToString & ".jpg" )
note que d'écrire a +1 revient à écrire a a+1
romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011 5 avril 2009 à 17:41
Trouvé !
Dim i As Integer = ComboBox1.SelectedItem
PictureBox1.Load("img" & i.ToString & ".jpg")
tout simplement...
Bon et bien je vais pouvoir finir mon projet.. (normalement)
Merci encore pour ton aide !
Ca fait 2 années de suite que tu me rends bien service.
MERCI pour le code, les explications.. C'est vraiment sympa de ta part d'aider les autres comme ça.