[ACCESS] Probleme formulaire ajout dynamique
GCH
-
linna -
linna -
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
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
A voir également:
- [ACCESS] Probleme formulaire ajout dynamique
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Tableau croisé dynamique - Guide
- Formulaire de reclamation instagram - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
6 réponses
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
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
fulgaro
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
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
parce que si tu as réussi ça m'interesse grandement
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à...
Je ne suis pas un spécialiste mais on peut espérer que Blux passe par là...
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.
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 ( [] )
afficher_zone_saisie("formulaire de saisie")
D'autre part, si les noms de tes objets comportent des espaces, tu dois les entourer de crochets ( [] )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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 ?
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 ...
je me suis planter sur le code ,
j'ai mis l'entete...
celui de la zone de texte c'est :
mais ça revient au meme puisque je crée les deux en meme temps...
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...