[ACCESS] Probleme formulaire ajout dynamique

GCH -  
 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

6 réponses

  1. zenon Messages postés 729 Statut Membre 180
     
    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
    1. 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
      0
  2. fulgaro
     
    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
  3. zenon Messages postés 729 Statut Membre 180
     
    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
    1. fulgaro
       
      
      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
  4. zenon Messages postés 729 Statut Membre 180
     
    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
    1. fulgaro
       
      la procedure afficher_zone_saisie fonctionne comme je l'ai dit plus haut avec les parametres que je lui donne...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blux Messages postés 2055 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
    1. fulgaro
       
      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
      1. fulgaro > fulgaro
         
        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
  7. blux Messages postés 2055 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    T'as essayé avec le formulaire fermé carrément ?
    0
    1. fulgaro
       
      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
      1. linna > fulgaro
         
        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