IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]ajouter un textbox sur un formulaire par code?


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut [VBA-E]ajouter un textbox sur un formulaire par code?
    Bonjour le forum
    afin de rendre mon apllication durable dans le temps je susi contraint de prévoir une partie "aministration" qui permet d'ajouter ou supprimer une opération à mon tableau
    Ca j'y arrive tres bien
    le souci est que pour remplir le tableau j'ai conçu un formulaire avec autant de textbox qu'il y a d'opération présente dans mon tableau
    or si j'ajoute une opération je dois aussi ajouté un textbox et vous comprendrez bien que je peux pas demandé à l'utiisateur de le faire !

    Est possible de le faire via une macro?
    Le savoir est une arme alors soyons armés

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Oui, c'est possible.
    2 possibilités:
    1°) si tu sais à l'avance quel champ tu devras ajouter, tu peux le faire dans ton formulaire de départ, mais le rendre invisible. Tu n'auras plus alors qu'à changer sa propriété "visible" pour le faire apparaître.
    2°) tu rajoutes par du code un contrôle dans ton formulaire. Je ne l'ai pas en tête, mais ça doit être danas la FAQ, ou en faisant une recherche avancée sur le forum.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    tres bien merci

    je suis obliger de faire la 2ieme solution ...
    je vais donc cherché
    Le savoir est une arme alors soyons armés

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    :o

    j'aimerai utiliser la 2ieme méthode (je l'a comprend mieu) mais j'ai pas trop compris ou il fallais mettre le code ?
    Le savoir est une arme alors soyons armés

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ben ???? Tu le mets à un endroit où il sera exécuté!!
    A quel moment veux-tu déclencher la création de ton nouveau contrôle? Tu vas bien mettre un bouton quelquepart qui permettra à tes utilisateurs de l'ajouter, non? C'est par exemple dans le "Click" de ce bouton que tu peux mettre le code.
    Ou alors je ne comprend pas ta question...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    non tu as bien compris

    mais c'est cette phrase qui m'a perturbé
    Auparavant il faut avoir déclaré votre contrôle dans la partie Déclarations du module de la form
    Le savoir est une arme alors soyons armés

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    alors voila j'ai presque réussi en fesant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim montexte As Control
     Set montexte2 = Opération.Controls.Add("Forms.TextBox.1")
        montexte.Left = 50
        montexte.Top = 50
        montexte.Width = 100
        montexte.Height = 25
        Opération.Show

    il faudrait aussi que j'ajoute des labels j'ai essayé de faire la même chose en remplacant Textbox par Label
    ca mrche aussi a pars pour l'option caption

    j'ai rajouté

    montexte.caption="test"
    mais a priori ca fonctionne pas
    Le savoir est une arme alors soyons armés

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montexte.Object.Caption="test"

    bonne journée
    michel[/code]

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    exact michel
    merci


    encore une question en fesant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set montexte = Opération.Controls.Add("Forms.Label.1")
    quel sera le nom du Label ? si c'est Label1 n'y a t'il pas un moyen pour le renommé et l'appelé Label44 par exemple?
    Le savoir est une arme alors soyons armés

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonjour

    il me semble que par défaut le Label va prendre le 1er index de disponible , en partant de 1 ( Label1 , Label 2 ...etc...)

    pour le renommer au moment de la creation , tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim monTexte As Control
    Set monTexte = Opération.Controls.Add("Forms.Label.1")
    monTexte.Name = "Label44"

    bonne journée
    michel

  12. #12
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set monTexte = Opération.Controls.Add("Forms.Label.1", "Label44")
    la propriété Name est en lecture seule à l'exécution
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir Thierry

    ta solution fonctionne tres bien

    par contre chez moi la propriété Name est en lecture/ecriture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim montexte As Control
    Set montexte = UserForm1.Controls.Add("Forms.Label.1")
     
    With montexte
    .Left = 50
    .Top = 50
    .Width = 100
    .Height = 25
    .Name = "Label44"
    End With

    si ensuite j'utilise par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    MsgBox Me.Controls(1).Name
    End Sub
    "Label44" est bien renvoyé


    bonne soiree
    michel

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    par contre chez moi la propriété Name est en lecture/ecriture
    Evidemment : si tu crées un contrôle dynamiquement ! la possibilité (il le faudra alors bien) de lui donner un nom te sera bien évidemment alors donnée !!!
    Thierry parlait d'un contrôle crée au stade du développement.

    Essayes donc de renommer maintenant ce contrôle et tu verras à quel point sa remarque était parfaitement justifiée !

    D'où l'intérêt, une fois de plus, d'être précis dans ses explications (tu aurais dû dire que tu créais dynamiquement !)

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    D'où l'intérêt, une fois de plus, d'être précis dans ses explications (tu aurais dû dire que tu créais dynamiquement !)
    ...et quel est le titre du fil de discussion ?


    bonne soirée
    michel

  16. #16
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Juste ! celà m'avait échappé (je ne suis pas seul dans ce cas, apparemment)..
    Désolé !

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour lors de la création de la form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set montexte = Opération.Controls.Add("Forms.Label.1")
        With montexte
        .Left = 50
        .Top = 50
        .Width = 100
        .Height = 25
        .Name = Label14
        End With
    cela va t'il provoqué l'évenement Initialize de l'Userform "Opération"?
    Le savoir est une arme alors soyons armés

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set montexte = Opération.Controls.Add("Forms.Label.1")
    va déclencher l'evenement Initialize du UserForm


    bonne soiree
    michel

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    merci pour l'info SilkyRoad


    J'ai un souci; en effet je souhaite pouvoir ajouter un label au Userform "Opération" à chaque fois que j'appui sur un bouton or lorsque j'en crée un le label apparait bien mais au coup suivant il n'est plus la


    comment faire :
    Le savoir est une arme alors soyons armés

  20. #20
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    j'ai du mal à te suivre : ma réponse était basée sur ta macro initiale

    Dim montexte As Control
    Set montexte2 = Opération.Controls.Add("Forms.TextBox.1")
    montexte.Left = 50
    montexte.Top = 50
    montexte.Width = 100
    montexte.Height = 25
    Opération.Show

    maintenant tu dis ajouter un Label à chaque clic sur un bouton : je présume que tu n'utilises pas la meme procedure , sinon ça va bugguer sur cette ligne

    Opération.Show

    de plus as tu adapté les autres lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        montexte.Left = 50 
        montexte.Top = 50 
        montexte.Width = 100 
        montexte.Height = 25
    si tu ne précises pas la position et la dimension des objets dans une variable , tu n'en verra qu'un seul ... car il seront tous superposés ...



    bonne soiree
    michel

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/11/2009, 08h53
  2. Réponses: 10
    Dernier message: 05/11/2008, 15h20
  3. Ajout d'onglets sur un formulaire existant
    Par jkrtu dans le forum IHM
    Réponses: 4
    Dernier message: 08/04/2008, 17h13
  4. Réponses: 3
    Dernier message: 02/05/2007, 13h36
  5. [VBA-Excel] Ajouter plusieurs forme sur ma forme principale
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/02/2007, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo