Creer lignes "enfant" a partir d'une ligne mere

Résolu
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008 - 22 oct. 2007 à 13:51
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008 - 23 oct. 2007 à 13:54
bonjour communauté VBFRANCE
j'ai une ligne model (line(0)) et je veux savoir est ce que c est possible de creer d'autre ligne (line(1),,,,,,,line(n)) a partir de cette ligne.
j ai deja cherché sur le forum,j'ai trouvé un cas similaire pour les forms mais ca n'a pas marché

precisement je veux generer la ligne enfant lorsque je clique sur un command  (boutton)
donc j ai autant d'enfant que de clique
et merci d'avance

18 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 oct. 2007 à 15:11
Salut,
Il faudrait être un peu explicite lorsque tu dit "ca n'a pas marché"
- Est ce qu'il y a une erreur
- Est ce que rien ne se passe
- Quel est le code que tu as utiliser en fin de compte.

REgarde ce petit exemple.

Option Explicit
'Dans un formulaire
'ajoute un COntrol Line appelle le TestLigne
'Met 0 dans sa propriété index.
'et regarde ce que fait ce code
Private Sub Form_Load()
Dim i As Integer

   For i = 1 To 10
       Call Load(TestLigne(i))
       With TestLigne(i)
           .X1 = TestLigne(0).X1
           .X2 = TestLigne(0).X2
           .Y1 = TestLigne(0).Y1 + (i * 45)
           .Y2 = TestLigne(0).Y2 + (i * 45)
           .Visible = True
       End With
           
   
   Next

End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 oct. 2007 à 08:09
Re,
Moi je dirais qu'il fonctionne (d'ailleurs as tu une erreur), mais par défaut il me semble que les ojbets créés sont INVISIBLES d'ou mon .Visible = TRUE dans le code.
Pour t'en convaincre teste ceci:

Private Sub Form_Load()
Dim i As Integer

   For i = 1 To 10
       Call Load(TestLigne(i))
       With TestLigne(i)
           .X1 = TestLigne(0).X1
           .X2 = TestLigne( 0 ).X2
           .Y1 = TestLigne(0).Y1 + (i * 45)
           .Y2 = TestLigne(0).Y2 + (i * 45)
           Call Msgbox(.Visible)
       End With
           
   
   Next

End Sub

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 oct. 2007 à 13:33
Re,
Oui d'accord mais as tu lu ce que je te met plus haut?
Par défaut les ligne créées sont INVISIBLES, le code que tu met dans ton post précédent fonctionne parfaitement cela crée bien les lignes mais il faut ajouter .Visible ) True (comme dans mon premier code exemple).

@+: Ju£i?n
Pensez: Réponse acceptée
3
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
22 oct. 2007 à 13:56
Ce code fonctionne ...

Load objline(objline.Count)

... à condition de ne pas utiliser le mot 'line' comme nom de controle !! C'est un mot réservé du langage VB6 ... et tu ne peux donc pas nommer une variable ou un objet avec !!
0

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

Posez votre question
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
22 oct. 2007 à 13:58
merci Kristof je vais l'essayer
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
22 oct. 2007 à 15:00
salut Kristof
ca n'a pas marché


ou peut etre "je n ai pas bien compris"


 
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
22 oct. 2007 à 17:59
Merci Jrivet
c'est beau a voir  et ca me donne des idees
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
22 oct. 2007 à 18:06
pour repondre a ta question ,voila le code que j'ai utiliser



http://www.vbfrance.com/infomsg_FORM-INDEXEE_25133.aspx
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
22 oct. 2007 à 18:25
SVP pourquoi ce bout de code ne marche pas

Dim j As Integer


 


Private Sub Command1_Click()
j = j + 1


 


Call Load(TestLigne(j))
With TestLigne(j)
           .X1 = TestLigne(0).X1
           .X2 = TestLigne(0).X2
           .Y1 = TestLigne(0).Y1 + (j * 45)
           .Y2 = TestLigne(0).Y2 + (j * 45)


 


End With
End Sub
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
22 oct. 2007 à 23:45
Parce que ton J est dans la procédure et n'est pas Static. Donc, chaque fois que tu cliques le bouton, J = 0 puis est incrémenté à 1 et TestLigne(1) existe déjà.

Si tu veux conserver ton compteur J dans la procédure, mets-le Static
ex: Static J As Integer

Sinon, déclare-le en entête de code de la feuille ou dans un module.

MPi²
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
23 oct. 2007 à 07:56
salut MPi
"Sinon, déclare-le en entête de code de la feuille ou dans un module"


oui si t'as remarqué je l'ai deja declarer en entete (declaration generale) dim j as integer


et merci


ca donne rien
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
23 oct. 2007 à 10:40
Oups désolé... mal vu...

MPi²
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
23 oct. 2007 à 13:19
salur Jrivet


d'abord merci pour ton aide


 


le premier code marche tres bien


le probleme c'est dans le code que j ai ecris


je voulais mettre un command sur mon form qui me permet de creer des ligne indexées a partir de Testligne(0) en s'inspirant du premier code (le tien)


et merci


 
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
23 oct. 2007 à 13:22
j'ajoute
un clique=une ligne crée
(le clique numero i genere TestLigne(i))
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
23 oct. 2007 à 13:22
aucun probleme MPi et merci
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
23 oct. 2007 à 13:25
voila le code

Dim j As Integer

Private Sub Form_load()
j=0
End Sub

Private Sub Command1_Click()
j = j + 1

 

Call Load(TestLigne(j))
With TestLigne(j)
           .X1 = TestLigne(0).X1
           .X2 = TestLigne(0).X2
           .Y1 = TestLigne(0).Y1 + (j * 45)
           .Y2 = TestLigne(0).Y2 + (j * 45)

 

End With
End Sub
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
23 oct. 2007 à 13:50
meeeeeeeeeeeeeeciiiiiiiiiiiiiiiiiiiiiiii JRIVEEEEEEEEEEEEEEET
ca fonctionne
j'ai appris beaucoup de choses
merci
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
23 oct. 2007 à 13:54
pour les gens qui veulent profiter de ce sujet
voila le code final

Dim j As Integer

Private Sub Form_load()
j=0
End Sub

Private Sub Command1_Click()
j = j + 1

 

Call Load(TestLigne(j))
With TestLigne(j)
           .X1 = TestLigne(0).X1
           .X2 = TestLigne(0).X2
           .Y1 = TestLigne(0).Y1 + (j * 45)
           .Y2 = TestLigne(0).Y2 + (j * 45)

           .VISIBLE=true

End With
End Sub

un grand merci a Jrivet
0
Rejoignez-nous