[ACCESS] Probleme formulaire ajout dynamique

Fermé
GCH - 5 sept. 2006 à 17:34
 linna - 10 août 2008 à 19:13
Bonjour,

je suis entrain de faire une application sous access 2003 dans
laquelle je dois générer des textbox dans un formulaire deja
existant.

Voici le code que j'utilise pour faire cela :


Private Sub Commande1_Click()

DoCmd.OpenForm Form_Formulaire1.Name, acDesign
Dim tbCtl As TextBox
Set tbCtl = Application.CreateControl(Form_Formulaire1.Name, acTextBox, acDetail)
DoCmd.Close acForm, Form_Formulaire1.Name, acSaveYes
DoCmd.OpenForm Form_Formulaire1.Name, acNormal

End Sub


Aussi, access me retourne ce message d'erreur lorsque je clique
sur le bouton pour générer le textbox :


Erreur d'exécution 29054 : Ms Office ne peut pas ajouter,
modifier ou supprimer le controle selectionne.


Merci pour votre aide, c'est tres important pour moi
Bonne journée

GCH

6 réponses

zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
9 nov. 2006 à 23:17
Bonsoir,

J'imagine que tu as vérifié dans l'aide.
Il me semble que dans le code donné plus haut, il manque les données d'emplacement et de taille du contrôle. Je cite l'aide:

Exemple de méthodes CreateControl et CreateReportControl

L'exemple suivant montre comment créer dans un premier temps un nouveau formulaire basé sur la table Commandes, puis utiliser la méthode CreateControl pour créer un contrôle de zone de texte et un contrôle d'étiquette liée dans le formulaire.

Sub NouveauxContrôles()
Dim frm As Form
Dim ctlÉtiquette As Control, ctlTexte As Control
Dim entDonnéeX As Integer, entDonnéeY As Integer
Dim entÉtiquetteX As Integer, entÉtiquetteY As Integer

' Crée un nouveau formulaire avec comme source des enregistrements la table Commandes.
Set frm = CreateForm
frm.RecordSource = "Commandes"
' Définit les valeurs de position pour les nouveaux contrôles.
entÉtiquetteX = 100
entÉtiquetteY = 100
entDonnéeX = 1000
entDonnéeY = 100
' Crée une zone de texte indépendante avec une taille par défaut dans la section Détail.
Set ctlTexte = CreateControl(frm.Name, acTextBox, , "", "", _
entDonnéeX, entDonnéeY)
' Crée un contrôle étiquette fils pour la zone de texte.
Set ctlÉtiquette = CreateControl(frm.Name, acLabel, , _
ctlTexte.Name, "Nouvelle étiquette", entÉtiquetteX, entÉtiquetteY)
' Restaure le formulaire.
DoCmd.Restore
End Sub
2
le probleme c est pas de le créer, c est d ajouter une fois qu il a été créé un controle dedans, j ai esssayer de le fermer pour le modifier et de le réouvrir après mais ça ne fonctionne pas... et c est à ce moment qu il me met une erreur
0
je suis dans le même cas que toi es que tu as réussi a résoudre ce probleme depuis le 05/09 ou es tu encore bloqué ?

parce que si tu as réussi ça m'interesse grandement
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
10 nov. 2006 à 09:07
Donne, si tu veux, le code que tu utilises.
Je ne suis pas un spécialiste mais on peut espérer que Blux passe par là...
0

DoCmd.Close acForm, "formulaire de saisie"
afficher_zone_saisie("formulaire de saisie") 
DoCmd.OpenForm "formulaire de saisie"



la procedure afficher_zone_saisie fonctionne, elle ouvre le formulaire : formulaire de saisie en mode création et ajoute une textbox...
ensuite elle le referme en le sauvegardant.
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
10 nov. 2006 à 13:19
Je ne pense pas qu'Access reconnaisse:
afficher_zone_saisie("formulaire de saisie")

D'autre part, si les noms de tes objets comportent des espaces, tu dois les entourer de crochets ( [] )
0
la procedure afficher_zone_saisie fonctionne comme je l'ai dit plus haut avec les parametres que je lui donne...
0

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

Posez votre question
blux Messages postés 26730 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 mars 2025 3 332
10 nov. 2006 à 13:57
Salut,

je passe par là...
Mais je ne suis pas spécialiste des ajouts 'à la volée'...
Cependant, je ne vois nulle part le nom du contrôle à rajouter, cela expliquerait peut-être le message d'erreur ?

Tu peux nous mettre ton code in extenso, STP ?
0
Set controle(i) = CreateControl(nom_form, acLabel)
  controle(i).Name = "TXT_lieux_" & tablieux(curslieux)
  controle(i).Left = (i - j) * 1150 + 5100
  controle(i).Top = 600
  controle(i).Width = 1000
  controle(i).Height = 250
  controle(i).BackColor = "14742270"
  controle(i).SpecialEffect = 0
  controle(i).BackStyle = 0
  controle(i).Caption = rs_afficher!nom
  curslieux = curslieux + 1
  i = i + 1


en gros c'est ça j'ai pas mal de code avant parce que je gère d'autre truc dans cette procedure mais ça me le crée bien, cette precedure me crée comme il se doit ma zone de texte le seul probleme est que si je l'appel depuis le formulaire ou elle doit créée cette zone de texte ça plante
meme si je ferme d'abord le formulaire avant de le réouvrir en mode création pour réaliser la modif, le refermer et le sauvegarder pour le réouvrir en mode normal ...
0
fulgaro > fulgaro
10 nov. 2006 à 14:24
je me suis planter sur le code ,
j'ai mis l'entete...

celui de la zone de texte c'est :

   
Set controle2(i) = CreateControl(nom_form, acTextBox)
    controle2(i).Name = x & "-" & y
    controle2(i).Left = x * 1150 + 5100
    controle2(i).Top = 300 * (y) + 1000
    controle2(i).Width = 1150
    controle2(i).Height = 200
    controle2(i).BackColor = "14742270"
    controle2(i).SpecialEffect = 0
    controle2(i).BackStyle = 0
    i = i + 1

mais ça revient au meme puisque je crée les deux en meme temps...
0
blux Messages postés 26730 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 mars 2025 3 332
10 nov. 2006 à 14:44
T'as essayé avec le formulaire fermé carrément ?
0
non parce que pour faire un formulaire dynamiquement il faut l'ouvrir en mode design ...
mais je veux bien tester... ;) je te dirais si ça a fonctionné
0
linna > fulgaro
10 août 2008 à 19:13
je suis dans le même cas que toi es que tu as réussi a résoudre ce probleme ou es tu encore bloqué ?

parce que si tu as réussi ça m'interesse grandement
0