merci silvers, tu gères !!
Pour l'instant ca tourne, mi tu risque d'entendre parler de moi bientôt!!!
Merci encore!! :mouarf::mouarf:
Version imprimable
merci silvers, tu gères !!
Pour l'instant ca tourne, mi tu risque d'entendre parler de moi bientôt!!!
Merci encore!! :mouarf::mouarf:
Pas de soucis !!! ;)
Tiens ! Je te avais dit, me revoilà !
En fait, je veux afficher dans ma fenetre un tableur (datagridview), et a coté des graphiques. Suis je obligé de passer par Excel pour les graphiques? Sinon que me conseille tu comme controle?
Par ailleurs, si je veux copier une matrice dans un datagridview, comment faire car j'ai l'impresion qu'on ne peut que remplir ligne par ligne et non pas cellule par cellule..
Merci!
Alors, pour le graphe, tu n'est pas obliger de passer par excel il y a des controles graphiques, mais excel c'est no limite !
Pour ce qui est du datagridview utilise la propriété datasource pour y mettre ta matrice
Alors en ce qui concerne le datasource, lorsque je cherche a selectionner une datasource, je peux seulement mettre form3, form2, form1 ou une bdd acces par exemple. Moi je veux que mon datagridview contiennent ma matrice A. Je veux bien le coder avec un boucle for mais je ne sais pas comment selectionner la cellule i,j du datagridview?
Dans le datasource tu peut mettre une table.
Pour selectionner une cellule :
Code:l_objexcel.Range("I1:J1").Select()
oui mais la ce que tu me met pour selectionner une cellule c'est avec excel?
Moi je souhaite selectionner une cellule d'un cntrle datagridview que j'ai placé sur mon form3. Je cherche quelquechose du genre DataGridView1.Cell(i,j)...
En pus, dans datasource, je ne trouve pas comment mettre ma matrice A en source... Je ne peux metre ke des objets, ou des bdd :bug::bug:
OK dsl j avai mal compris
Ceci recupere la valeur de la premiere cellule de la 3ème ligne.Code:Datagridview.Rows(2).cells(0).Value
Nota : La premiere ligne ce n'est pas la ligne 1 mais la ligne 0 idem pour les cellules
:aie:
Ok super ! Merci Silvers, je m'y esaie tout de suite!
O fait, simple question : comment fait tu pour repondre aussi rapidement à chaque fois? :lol::lol:
Tu as un boulot ki te permet d'etre sur internet constemment ? ou alors tu es en vacances veinard...:mrgreen:
J'ai un boulot qui me permet d'etre sur internet a longueur de journé.
Je suis genie logiciel, donc Visual Studio c'est mon outil de travail au quotidien.
Pour mettre ta table dans un datagridview voila ce qu'il fau faire :
tu ajoute autan de colonne et de ligne que tu le souhaite pour ta matrice, c'est simple et très efficace. ;)Code:
1
2
3
4
5
6
7
8
9
10
11 Dim MaTable As DataTable MaTable = New DataTable("MaTable") MaTable.Columns.Add("Nom", Type.GetType("System.String")) MaTable.Columns.Add("Prenom", Type.GetType("System.String")) MaTable.Columns.Add("Sexe", Type.GetType("System.String")) MaTable.Columns.Add("Age", Type.GetType("System.String")) MaTable.Rows.Add("Sala", "Olivier", "Masculin", "23") DataGridView1.DataSource = MaTable
Le truc, c'est que ma matrice A est de taille variable suivant ce qui se trouve dans une base de doées et qui est selectionné par l'utilisateur. Donc, je ne sait pas combien il y aura de colonnes au moment de l'écriture du code...
J'ai bien essayé ceci :
Mais à l'éxecution, le datagridview reste vide...Code:
1
2
3
4
5
6
7
8 DataGridView1.ColumnCount = Form1.Nom.Count For i = 0 To Form1.Nom.Count - 1 DataGridView1.Rows.Add() For j = 0 To Form1.Nom.Count - 1 DataGridView1.Rows(i).Cells(j).Value = A(i, j) Next j Next i
Ta matrice "A" c'est quoi exactement ? un array ?
Donne moi plus d'info :
-Type de ta matrice
-Ou va tu chercher les données a mettre dans ta matrice (bdd access,sql,oracle)
si tu peu me donné le code qui rempli cette matrice
Dans form1, je définit une list of string qui contient les noms des enregistrements que l'utilisateur souhaite utiliser (c'est à dire que avant déjà, j'ai parcouru la base, proposé à l'utiisateur les enregistrements et lui a coché ceux qui l'interessaient), le nom étant la clé primaire.
Je sais donc que l'utilisateur est interessé par Form1.Nom.Count enregistrements. Les enregistrements son stockés dans une bdd access.
Dans form3, je créé la matrice :
Jusque là c'est ok.Code:
1
2
3 Public Class Form3 Public A(Form1.Nom.Count, Form1.Nom.Count) As Double
Ensuite, je vais chercher les dnnées qui m'interessent et je remplis la matice A :
C'st un peu long je suis desolé...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 'Cidessous jinitialis quleques parametres pour me connecter à la bdd Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\Users\patrick\Documents\Mehdi\hakim1.mdb") Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand() Dim i As Integer Dim j As Integer DataGridView1.ColumnCount = Form1.Nom.Count For i = 0 To Form1.Nom.Count - 1 DataGridView1.Rows.Add() For j = 0 To Form1.Nom.Count - 1 ' Ici je définit des variables pour stocker les resultat de chaque requete Dim Sj As Single Dim Si As Single Dim V As Single If i <> j Then 'Jeffectue les requetes a la suite Mycommand.CommandText = "SELECT " + Form1.Nom(i) + "FROM INDICES WHERE NOM =" + Form1.Nom(j) MyConnexion.Open() Dim myReader As OleDbDataReader = Mycommand.ExecuteReader() V = myReader.GetString(0) myReader.Close() MyConnexion.Close() Mycommand.CommandText = "SELECT VOLATITP1 FROM INDICES WHERE NOM =" + Form1.Nom(i) MyConnexion.Open() myReader = Mycommand.ExecuteReader() Si = myReader.GetString(0) myReader.Close() MyConnexion.Close() Mycommand.CommandText = "SELECT VOLATITP1 FROM INDICES WHERE NOM =" + Form1.Nom(j) MyConnexion.Open() myReader = Mycommand.ExecuteReader() Sj = myReader.GetString(0) myReader.Close() MyConnexion.Close() A(i, j) = -(V * Sj) / (2 * Si * Si) Else : A(i, j) = 1 End If DataGridView1.Rows(i).Cells(j).Value = A(i, j) Next j Next i
Au final, l'éxéction me donne un rectangle gris désolant... Aucune ligne ou colone n'est créee, et du coup je ne sais pas si ma matrice est ien remplie (cest ce que je voulai verifier ac ce datagridview)
Ou lala sa risque pas de fonctionner comme sa, c'est une usine a gaz ton truc.
Pourquoi tu ne fait pas une requete qui irai te chercher en une seul fois toutes les informatons dont tu as besoin et qui les mettrai directement dans ton datagridview sans faire de boucle ?
je te l'ecrirai bien mais je ne connai pas la structure de ta base de donnée et encore moin ce que tu cherche a faire exactement donc c'est pas facile.
Ben, j pense que je suis obligé de faire une boucle puisque e ne sais pas comien il y a d'élments das la base de données... En fait la tructure de la table est simple : il ya n lignes par exemple. Le premier champ est le nom d'un indice boursier. Le second champ (nommé cov1) est la covariance de l'indice 1 avec tous les autes indices. Le champ 3 (nommé cov3) est la covariance de l'indice 2 avc tous les autres indices et ainsi de suite. On a donc n+1 colonnes.
Mai attention, toutes les covariances ne m'interessent pas! Seulement celles qui correspodent aux indices que l'utilisateur a choisi, et dont les noms ont stockés dans la collection Nom. Tu m'as compris?
Donc si par exemple je veux copier la matrice des covariances dans le datagridview, mais sulement pour les indices chosis, je fais comment s'il te plait? :roll:
Tu peu utilisé une boucle pour incrémenté ta requete et une fois la boucle terminer tu execute ta requete pour eviter de faire une requete a chaque tour.
Exemple :
Code:
1
2
3
4
5
6 Private memoire As New DataSet() 'creation du dataset Private cnx As System.Data.OleDb.OleDbConnection Private base As String Private liaison As New OleDb.OleDbDataAdapter Private BdProvider = "Microsoft.Jet.Oledb.4.0" Private BdPathDirectory = ("C:\MaBase.mdb")
Ici ton datagridview est remplit direct grace a la requete, pas besoin de créer des lignes et des colonnes pi les rempli une par une, nan, tout est automatique.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 base = "provider=" & BdProvider & "; " & _ "data source= " & BdPathDirectory 'declaration de la connection cnx = New OleDb.OleDbConnection(base) cnx.Open() 'ouverture de la connection Dim requete = "SELECT * FROM (Messages) WHERE ([A] = '" & VariableString & "') AND ([Lu] = 0) " for i as integer = 1 to 5 requete += "OR ([A]= " & i & ") " next i liaison = New OleDb.OleDbDataAdapter(requete, base) 'charge la table en mémoire liaison.Fill(memoire, "MaTable") Dim vue As New DataView(memoire.Tables("MaTable")) DGVGM.DataSource = vue
Avec Access TOUT est possible meme les requettes les plus complexes!
Creer ta requete sur Access et click sur mode SQL tu aura la requette exacte.
Sachant que tu peu utiliser des JOIN, UNION et j en passe ..... tu peu grouper plein de requetes en une ! et hop direct dans le datagridview !!
C'est la magie de Visual Studio !:king: