Créer des zones de texte dynamiquement

Signaler
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013
-
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013
-
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

Messages postés
38
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
9 décembre 2008

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.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013

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?
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013

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.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013

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!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Re,
Est ce que ceci peut t'aider

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013

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 ??
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
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
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013

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 ?
Messages postés
32
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
27 janvier 2013

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 ?