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 excel creation de controle dans une form


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut VBA excel creation de controle dans une form
    Bonjoru à tous,

    je sèche lamentablement sur un truc simle : créer un contrôle dans une Form de façon dynamique.
    Contexte : une form est ouverte, et si je clique dedans, je veux créer une textbox. J'ai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Click()
    Dim te As TextBox
    Set te = Me.Controls.Add("Forms.TextBox", "te")
    te.Visible = True
    te.Top = 0
    te.Left = 0
    End Sub
    mais ca plante avec le message "Invalid class name". J'ai essayé avec VB.TextBox mais ca plante pareil.
    Et les exemples trouvés sur Internet ne m'aident pas, y a soit rien qui marche, soit je pige pas...

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, un exemple pour un calendrier

  3. #3
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Salut,

    trop complique pour moi, je comprends pas tout. En plus ca semble pas être mon cas, à savoir ajouter un controle de base dans une form. L'exemple ajoute un calendrier (spécifique) dans une feuille et fait je ne sais quoi après avec...

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, Création ex nihilo à adapter à ton contexte
    Affecter un bouton à UserForm_Dynamique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Explicit
     
    '   Références à cocher
    '   Microsoft Visual Basic for Applications Extensibility 5.3
    '   Microsoft Forms 2.0 Object Library
     
    Sub UserForm_Dynamique()
    Dim Usf As Object
    Dim Lbl As MSForms.Label
    Dim CB As MSForms.CommandButton
    Dim sStr As String
    Dim i As Long
     
        Set Usf = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
        With Usf
            .Properties("Caption") = "UserForm Dynamique"
            .Properties("Height") = 240
            .Properties("Width") = 320
        End With
     
        Set CB = Usf.Designer.Controls.Add("forms.CommandButton.1")
        With CB
            .Caption = "Fermer"
            .Left = 200
            .Top = 180
        End With
     
        Set Lbl = Usf.Designer.Controls.Add("forms.Label.1")
        With Lbl
            .Caption = "mon texte"
            .TextAlign = fmTextAlignCenter
            .Left = 20
            .Top = 20
            .BackColor = vbRed
            .BorderStyle = fmBorderStyleSingle
        End With
     
        sStr = "Sub CommandButton1_Click()" & _
             vbCrLf & "Unload Me" & _
             vbCrLf & "End Sub"
     
        With Usf.CodeModule
            i = .CountOfLines
            .InsertLines i + 1, sStr
        End With
     
        sStr = "Sub Label1_Click()" & _
             vbCrLf & "MsgBox " & _
             """Vous avez cliqué sur mon texte""" & _
             vbCrLf & "End Sub"
        With Usf.CodeModule
            i = .CountOfLines
            .InsertLines i + 1, sStr
        End With
     
        VBA.UserForms.Add(Usf.Name).Show
        ThisWorkbook.VBProject.VBComponents.Remove Usf
    End Sub

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Click()
        Dim te As MSForms.TextBox
        Set te = Me.Controls.Add("Forms.TextBox.1", "te")
        te.Visible = True
        te.Top = 0
        te.Left = 0
    End Sub
    Cordialement

    ctac

  6. #6
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Trop classe ctac_ !
    Merci beaucoup.
    Au fait, dans le code "Forms.TextBox.1", le ".1" c'est pourquoi exactement ? Si j'en crée plusieurs, faut incrémenter ?

    Pour la suppression, je suppose qu'il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls.Remove("te")
    Merci.

  7. #7
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, l'exemple plus haut, création ex nihilo de l'UserForm, d'un Bouton et de 5 TextBoxes avec le code VBA attenant.Si cela peut t'inspirer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Option Explicit
     
    '   Références à cocher
    '   Microsoft Visual Basic for Applications Extensibility 5.3
    '   Microsoft Forms 2.0 Object Library
     
    Sub UserForm_Dynamique()
    Dim Usf As Object
    Dim txtB As MSForms.TextBox
    Dim Cb As MSForms.CommandButton
    Dim sStr As String
    Dim i As Long, k As Long
     
        Set Usf = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
        With Usf
            .Properties("Caption") = "UserForm Dynamique"
            .Properties("Height") = 240
            .Properties("Width") = 320
        End With
     
        Set Cb = Usf.Designer.Controls.Add("forms.CommandButton.1")
        With Cb
            .Caption = "Fermer"
            .Left = 200
            .Top = 180
        End With
     
        sStr = "Sub CommandButton1_Click()" & _
               vbCrLf & "   Unload Me" & _
               vbCrLf & "End Sub" & vbCrLf
        With Usf.CodeModule
            i = .CountOfLines
            .InsertLines i + 1, sStr
        End With
     
        For k = 1 To 5
            Set txtB = Usf.Designer.Controls.Add("forms.Textbox.1")
            With txtB
                .Tag = k
                .Text = "texte" & k
                .TextAlign = fmTextAlignCenter
                .Left = 20
                .Top = 20 * k
                .BackColor = vbGreen
                .BorderStyle = fmBorderStyleSingle
            End With
        Next k
     
        For k = 1 To 5
            sStr = "Sub TextBox" & k & "_DblClick(ByVal Cancel As MSForms.ReturnBoolean)" & vbCrLf & _
                   "    Msgbox(" & "TextBox" & k & ".Tag)" & _
                   vbCrLf & "End Sub" & vbCrLf
            With Usf.CodeModule
                i = .CountOfLines
                .InsertLines i + 1, sStr
            End With
        Next k
     
        VBA.UserForms.Add(Usf.Name).Show
        ThisWorkbook.VBProject.VBComponents.Remove Usf
    End Sub

Discussions similaires

  1. Ordre d'affichage des control dans une form
    Par bipcpp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/12/2009, 20h08
  2. Réponses: 7
    Dernier message: 09/10/2009, 14h12
  3. Afficher un user control dans une form
    Par andromeda dans le forum C#
    Réponses: 1
    Dernier message: 28/04/2009, 11h12
  4. [vba excel] chercher un mot dans une cellule
    Par MrYoYo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/02/2009, 17h38
  5. Tester l'existence d'un control dans une form
    Par Naruseb dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/08/2006, 18h30

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