Flexgrid par textboxes

Résolu
Piramyd Head27 Messages postés 31 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 28 mars 2014 - 2 sept. 2010 à 02:39
 Profil bloqué - 5 sept. 2010 à 01:44
Bonjour !
Je suis en train de programmer un logiciel de gestion de commandes pour mon entreprise et je dois y ajouter un FlexGrid comme tableur pour les feuilles de soumissions...bref, je n'ai pas vraiment encore touché au Grid de VB...j'ai cherché le forum..en vain, voila donc mon petit problème:

Je veux remplir mon FlexGrid avec plusieur entrées Textbox, 4 en fait, mais je ne parviens pas encore à ajouter les données dans la rangée 2 !! Ridicule, je sais, donc j'ai essayer quelque chose du genre:

Private Sub Command3_Click()

Dim i As Integer

i = 2 'Je commence à la rangée 2'

With flx
.Rows = i + 1
.TextMatrix(i, 0) = ""
.TextMatrix(i, 1) = Text1.Text
.TextMatrix(i, 2) = ""
.TextMatrix(i, 3) = Text2.Text
.TextMatrix(i, 4) = ""

.Rows = .Rows + 1

End With


End Sub

...seulement pour tester, mais plutôt que de sauter à la deuxième rangée lors d'une deuxième saisie...cela réécris dans la même !! Et là...je pige pas...ou je suis con et aveugle !!!
En tout cas merci d'avance et si vous voulez plus de détail dites-le moi !

5 réponses

Profil bloqué
2 sept. 2010 à 06:58
Salut
dans Command3_Click tu commences toujours à la rangée 2
donc l'ajout se fait toujours sur la même rangée

tout en haut de ta feuille tu mets : Private ligne as long ' ligne courante Grid

Dans le Form_Load de ta feuille tu ajoutes : ligne = 2

Private Sub Command3_Click()

With flx
.TextMatrix(ligne, 0) = ""
.TextMatrix(ligne, 1) = Text1.Text
.TextMatrix(ligne, 2) = ""
.TextMatrix(ligne, 3) = Text2.Text
.TextMatrix(ligne, 4) = ""
ligne = ligne + 1 ' pour ligne suivante la prochaine fois
.Rows = .Rows + 1

End With
End sub


ainsi à chaque ajout de ligne la grille se remplira à la ligne suivante

Autre chose : nommes tes contrôles (Command3 n'est pas très parlant : Ajoutligne serait mieux)

Dernière chose : pour une Grid on parle de lignes et de colonnes ( les rangées on ne connait pas)


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
3
Piramyd Head27 Messages postés 31 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 28 mars 2014
2 sept. 2010 à 23:28
Bonjour et merci de m'avoir répondu !!

J'ai bien fait ce que tu m'as dit et ca ressemblais a ce que j'avais déja essayer la semaine dernière sauf que moi j'avais mis Private i As Integer mais ca me donnais sans cesse : Subscript out of range. Et avec ce que tu m'as conseiller ca me donne la même chose !

Je vais coller le code complet tu pourras p-e me dire de quoi il en ressort car moi je ne connaissais pas encore cette erreur. Ha, et pour les controle c'est normal...c'est ma facon de procéder...tant que ca marche pas je laisse les noms d'origines...et pour rangée bah...mauvaise traduction de Row !!!

Private ligne As Long

Private Sub Command1_Click()
Prix.Visible = True
End Sub

Private Sub Command2_Click()
Moul.Show
End Sub

Private Sub Command3_Click()

With flx
.TextMatrix(ligne, 0) = ""
.TextMatrix(ligne, 1) = Text1.Text
.TextMatrix(ligne, 2) = ""
.TextMatrix(ligne, 3) = Text2.Text
.TextMatrix(ligne, 4) = ""
ligne = ligne + 1
.Rows = .Rows + 1
End With

End Sub

'Propriétés de la Form
Private Sub form_load()

ligne = 2

'Taille de la Form
Me.Height = 10305
Me.Width = 14565

'Insertion des champs Headers de la Grille
flx.TextMatrix(0, 1) = "Détails"
flx.TextMatrix(0, 2) = ""
flx.TextMatrix(0, 3) = "Hauteur"
flx.TextMatrix(0, 4) = "X"
flx.TextMatrix(0, 5) = "Largeur"
flx.TextMatrix(0, 6) = ""
flx.TextMatrix(0, 7) = "Haut. Coeur"
flx.TextMatrix(0, 8) = "X"
flx.TextMatrix(0, 9) = "Larg. Coeur"
flx.TextMatrix(0, 10) = ""
flx.TextMatrix(0, 11) = "Prix"
'Largeurs fixes des colonnes
flx.ColWidth(0) = 975
flx.RowHeight(1) = 500
flx.ColWidth(1) = 2500
flx.ColWidth(2) = 250
flx.ColWidth(3) = 1850
flx.ColWidth(4) = 250
flx.ColWidth(5) = 1850
flx.ColWidth(6) = 250
flx.ColWidth(7) = 1850
flx.ColWidth(8) = 250
flx.ColWidth(9) = 1850
flx.ColWidth(10) = 250
flx.ColWidth(11) = 1850
End Sub

Private Sub Image1_Click()
Aide.Show
End Sub
0
Piramyd Head27 Messages postés 31 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 28 mars 2014
2 sept. 2010 à 23:48
Bon encore moi...

Je viens de me rendre compte de mon (notre) erreur...en fait dans FormLoad je dois mettre
ligne =1, ligne=2 est impossible car il n'y a qu'une seule ligne visible lorse que le Flex se charge, donc je n'ai plus Subscript out of range....affaire classé !!

Mais pour ce qui est de l'ajout d'une ligne bah le problème c'est que justement à chaque fois que je fais Command3_Click ca n'ajoute qu'une ligne vide et les données remplace celles de la première ligne ???
0
Piramyd Head27 Messages postés 31 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 28 mars 2014
2 sept. 2010 à 23:52
Ben dit donc! Je suis dû me corriger moi même ce soir! Je suis en feu !!!

Je viens de trouver ma seconde erreur.....ligne=1...je l'avais mis dans le FormLoad ET dans mon Command3_Click Imbécile que je suis !!!!!

Donc tout mes problèmes du moment sont résolus et ce en grande partie grace a toi Galain
Merci bien et...heu..n'en parle a personne

A+
0

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

Posez votre question
Profil bloqué
5 sept. 2010 à 01:44
Promis : j'en parlerai à personne

"et pour les contrôles c'est normal...c'est ma façon de procéder...tant que ca marche pas je laisse les noms d'origines."
Les noms d'origine ne traduisent pas l'utilité et le rôle d'un contrôle.Là c'est toi qui voit mais si tu as sur ta feuille un nombre important de contrôles du même type c'est plus clair de leur donner un nom en rapport avec leur rôle dans le programme : une étiquette qui affiche le prix d'un article sera nommée Prix et non Label1, une autre qui affiche l'article sera nommé Designation et non Label2, etc....

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Rejoignez-nous