Flexgrid par textboxes [Résolu]

Messages postés
32
Date d'inscription
mercredi 19 septembre 2007
Statut
Membre
Dernière intervention
28 mars 2014
- - Dernière réponse : cs_Galain
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
- 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 !
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Galain
Messages postés
32
Date d'inscription
mercredi 19 septembre 2007
Statut
Membre
Dernière intervention
28 mars 2014
0
Merci
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
Commenter la réponse de Piramyd Head27
Messages postés
32
Date d'inscription
mercredi 19 septembre 2007
Statut
Membre
Dernière intervention
28 mars 2014
0
Merci
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 ???
Commenter la réponse de Piramyd Head27
Messages postés
32
Date d'inscription
mercredi 19 septembre 2007
Statut
Membre
Dernière intervention
28 mars 2014
0
Merci
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+
Commenter la réponse de Piramyd Head27
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
0
Merci
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
Commenter la réponse de cs_Galain