Créer des zones de texte dynamiquement

supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013 - 16 avril 2008 à 18:06
supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013 - 16 avril 2008 à 20:34
Salut à tous,


je cherche à créer des zones de texte en fonction de ce qu'il y a dans un tableau.

J'ai un tableau (qui n'a pas toujours le même nombre de cases
remplies), et ce que je veux, c'est créer autant de zones de texte que
de cases remplies.


Au début j'étais parti pour créer plein de zones de textes et les
rendre visible en fonction de la demande mais ce n'est vraiment pas
pratique car ça m'oblige à construire des centaines de zones de texte
qui ne serviront jamais a rien !

Merci d'avance pour votre aide.

13 réponses

vautour32 Messages postés 38 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 9 décembre 2008
16 avril 2008 à 18:58
Voici ce que je propose
Tu crées un nouveau projet et, sur  la form, tu places une textbox.  Tu la sélectionnes, ctrl+c,ctrl+v et tu réponds oui à la msgbox qui s'affiche. Ensuite, tu places le code suivant:
Private Sub Form_click()
ajouterTxtBox
End Sub
Sub ajouterTxtBox()
Dim ctl As TextBox
Dim tmp As Integer
tmp = Text1.UBound + 1
Set ctl = Text1(tmp)
Load ctl
ctl.Left = Text1(tmp - 1).Left + Text1(tmp - 1).Width + 250
ctl.Text = tmp
ctl.Visible = True
End Sub
Bonne prog.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 avril 2008 à 19:07
Salut,
>[auteur/VAUTOUR32/1150647.aspx vautour32]: Si il est bien en , la notion de groupe de contrôle n'existe pas. (pas de propriété Index pour les controls)

>[auteur/SUPERTOMS/1058141.aspx supertoms] : N'as tu rien trouvé qui ne puisse t'aider dans le forum ou bien dans la section code?

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 avril 2008 à 19:08
oups petit oubli.
Il faut lire

>[auteur/VAUTOUR32/1150647.aspx vautour32]: Si il est bien en [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA] , la notion de groupe de contrôle n'existe pas. (pas de propriété Index pour les controls)

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013
16 avril 2008 à 19:08
Merci beaucoup pour ta réponse, malheureusement ca ne marche pas, c'est peut-etre du au fait que je travail en vba sous access2000?
0

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

Posez votre question
supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013
16 avril 2008 à 19:09
Non justement je cherche depuis plusieurs jours et je ne trouve absolument rien, pourtant je ne suis quand meme pas le premier a vouloir faire ca ?!
Avez-vous des petites pistes ?
Merci d'avance.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 avril 2008 à 19:13
Re,
Non tu n'es pas le premier.
En revanche étant donné que Excel est vaste il faut que tu précises OU tu souhaites les créer.

1 - Dans un UserForm
2 - Dans une Feuille Excel?

Il faut que tu dises aussi si tu souhaites exécuter du code lors de l'appui sur ces boutons créés?

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013
16 avril 2008 à 19:16
Je travaille sous Access.
Je veux souhaiter ces zones de texte dans le même formulaire que le bouton.
Il y aurait un bouton avec comme nom "ajouter une case", et quand je clique dessu ça ajoute une zone de saisie en desou appelée par exemple "case001".

Merci d'avance!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 avril 2008 à 19:23
Re,
Oups vraiment désolé je n'avais pa vu le ACCESS dan tes posts précédent (lu trop vite)

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 avril 2008 à 19:28
Re,
Est ce que ceci peut t'aider

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013
16 avril 2008 à 19:47
Merci beaucoup jrivet, ce n'est toujours pas ce que je veux mais je reprends espoir !
Donc j'ai mis ce code sur un bouton :
Sub NewControls()
    Dim frm As Form
    Dim ctlLabel As Control, ctlText As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer

    ' Create new form with Orders table as its record source.
    Set frm =  CreateForm
    frm.RecordSource = "Orders"
    ' Set positioning values for new controls.
    intLabelX = 100
    intLabelY = 100
    intDataX = 1000
    intDataY = 100
    ' Create unbound default-size text box in detail section.
    Set ctlText =  CreateControl( frm.Name, acTextBox, , "", "", _
        intDataX, intDataY)
    ' Create child label control for text box.
    Set ctlLabel  = CreateControl(frm.Name, acLabel, , _
         ctlText.Name, "NewLabel", intLabelX, intLabelY)
    ' Restore form.
    DoCmd.Restore
End Sub


...mais le problème c'est qu'il ouvre un nouveau formulaire (avec une zone de texte dedan), moi je voudrai que cette zone de texte apparaisse dans le formulaire en cour, en dessou du bouton.

C'est possible ??
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 avril 2008 à 19:56
Re,
En fait il faut que tu changes
frm.Name par le nom du Formulaire dans lequel tu souhaites les créer.
Ensuite Penses à bien modifier les positions des controles.
<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013
16 avril 2008 à 20:23
Escuse-moi mais j'ai vraiment du mal à comprendre, voici ce que j'ai actuellement, le bouton Commande2 est dans mon formulaire Form_Table1, et voici le code :

Option Compare Database

Private Sub Commande2_Click()
    Dim ctlLabel As Control, ctlText As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer

    ' Create new form with Orders table as its record source.
    Set Form_Table1 = CreateForm
    Form_Table1.RecordSource = "Orders"
    ' Set positioning values for new controls.
    intLabelX = 100
    intLabelY = 100
    intDataX = 1000
    intDataY = 100
    ' Create unbound default-size text box in detail section.
    Set ctlText = CreateControl(Form_Table1.Name, acTextBox, , "", "", intDataX, intDataY)
    ' Create child label control for text box.
    Set ctlLabel = CreateControl(Form_Table1.Name, acLabel, , ctlText.Name, "NewLabel", intLabelX, intLabelY)
    ' Restore form.
    DoCmd.Restore
End Sub

Pour l'instant j'obtiens un message d'erreur au niveau de la ligne Set Form_Table1 = CreateForm :
"Incompatibilité de type"

Quel est le problème ?
0
supertoms Messages postés 32 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 27 janvier 2013
16 avril 2008 à 20:34
resalut,
j'ai un peu fait le trie et voila mon code :

Option Compare Database

Private Sub Commande2_Click()
    Dim ctlText As Control
    Dim intDataX As Integer, intDataY As Integer

    intDataX = 1000
    intDataY = 100
   
    Set ctlText = CreateControl(Form_Table1.Name, acTextBox, , "", "", intDataX, intDataY)

    DoCmd.Restore
End Sub

Et j'obtiens un message d'erreur qui me fait un peu peure : "Les contrôles no peuvent être crées ou supprimés qu'en mode création".

que faire ?
0
Rejoignez-nous