Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1731 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  utiliser un evenement sur un controle créé dynamiquement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

utiliser un evenement sur un controle créé dynamiquement

n°1509694
hnkmic
Posté le 01-02-2007 à 16:44:38  profilanswer
 

Bonjous a tous  
 
sur VB Excel(2003)
j'ai créé un userform (userform) dans lequel un bouton lance la creation de control (textbox et label)
 
Avec la syntaxe suivant  
Dim ctl As label
 
Set ctl = Me.Controls.Add("Forms.Label.1", "label" + Trim(Str(c)))
 
With ctl
    .Left = 12
    .Top = vtop + vltop
    .Caption = cell.Offset(0, -1).Value
End With
 
la
 

mood
Publicité
Posté le 01-02-2007 à 16:44:38  profilanswer
 

n°1509699
hnkmic
Posté le 01-02-2007 à 16:51:49  profilanswer
 

Zut j'ai valider par erreur ..
 
je reprend ..
la creation des controls se fait sans probleme , ce que je n'arrive pas a faire c'est utiliser les controles créés dans des evenement  
 
exemple  
sauf erreur de ma part ci-dessus j'ai crée un label nommer label1 (c=1)
comment utiliser l'evenement click ?
Private Sub label1_click()
 
        Label1.Caption = "Control was Added."
     
End Sub
 
 
j'ai trouver et essayé des tas de "script" en provenance du net aucun ne fonctionne  
please help me !
 
 
 

n°1509841
Paul Hood
Posté le 01-02-2007 à 22:30:33  profilanswer
 

Si le nom de ton label est fixé à l'avance, tu peux générer automatiquement le code de ton événement dans ta feuille.


Message édité par Paul Hood le 01-02-2007 à 22:31:07
n°1509894
kiki29
Posté le 02-02-2007 à 05:05:48  profilanswer
 

A adapter à tes besoins


' Sous VBA Cocher dans Outils | Références Microsoft Forms 2.0 Object Library
' Pour cela : Cliquer Parcourir | Ajouter une référence
' puis aller dans C:\Windows\System32\ pour sélectionner FM20.dll
 
Option Explicit
 
Sub Tst()
    EssaiAvecBouton "Essai création par code"
End Sub
 
Sub EssaiAvecBouton(ByVal Titre As String)
Dim UserForm As Object
    Set UserForm = CreationFormAvecBouton(Titre)
    UserForm.Show
    DelComp UserForm.Name
    Unload UserForm
    Set UserForm = Nothing
End Sub
 
Function CreationFormAvecBouton(ByVal Titre As String) As Object
Dim Form As Object, Cbox1 As Object, Btn1 As Object, Btn2 As Object
Dim TxtBox1 As Object
Dim x As Long, Code As String
 
    Application.VBE.MainWindow.Visible = False
 
    Set Form = ThisWorkbook.VBProject.VBComponents.Add(3)
    With Form
        .Properties("Caption" ) = Titre
        .Properties("Width" ) = 250
        .Properties("Height" ) = 100
    End With
 
    Set TxtBox1 = Form.Designer.Controls.Add("forms.textbox.1" )
    With TxtBox1
        .Left = 60
        .Top = 20
    End With
 
    Set Btn1 = Form.Designer.Controls.Add("forms.commandbutton.1" )
    With Btn1
        .Caption = "Ok"
        .Left = 60
        .Top = 50
    End With
 
    With Form.CodeModule
        x = .CountOfLines + 1
        Code = "Sub CommandButton1_Click()" & vbCrLf
        Code = Code & "Dim s As String" & vbCrLf
        Code = Code & "  s=Textbox1.text" & vbCrLf
        Code = Code & "  ThisWorkBook.Coucou(s)" & vbCrLf
        Code = Code & "  Me.Hide" & vbCrLf
        Code = Code & "End Sub" & vbCrLf        
        .InsertLines x, Code
    End With
     
    Set Btn2 = Form.Designer.Controls.Add("forms.commandbutton.1" )
    With Btn2
        .Caption = "Annuler"
        .Left = Btn1.Left + Btn1.Width + 10
        .Top = Btn1.Top
    End With
 
    With Form.CodeModule
        x = .CountOfLines + 1        
        Code = "Sub CommandButton2_Click()" & vbCrLf
        Code = Code & "  Me.Hide" & vbCrLf
        Code = Code & "End Sub" & vbCrLf & vbCrLf    
        Code = Code & "Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)" & vbCrLf
        Code = Code & "   If CloseMode = 0 Then Cancel = True" & vbCrLf
        Code = Code & "End Sub" & vbCrLf        
        .InsertLines x, Code
    End With
 
    Set Cbox1 = Form.Designer.Controls.Add("forms.ComboBox.1" )
    With Cbox1
        .Left = TxtBox1.Left + TxtBox1.Width + 10
        .Top = TxtBox1.Top
        .Style = fmStyleDropDownList
        .BackColor = &HC0FFFF
        .ListRows = 32
    End With
 
    With Form.CodeModule
        x = .CountOfLines + 1        
        Code = "Private Sub UserForm_Initialize()" & vbCrLf
        Code = Code & " MajCbo1" & vbCrLf
        Code = Code & "End Sub" & vbCrLf        
        .InsertLines x, Code
    End With
     
    With Form.CodeModule
        x = .CountOfLines + 1        
        Code = "Sub MajCbo1()" & vbCrLf
        Code = Code & "Dim i as Integer" & vbCrLf
        Code = Code & "   With ComboBox1" & vbCrLf
        Code = Code & "       For i=1 to 10" & vbCrLf
        Code = Code & "           .AddItem i " & vbCrLf
        Code = Code & "       Next" & vbCrLf
        Code = Code & "   End With" & vbCrLf
        Code = Code & "End Sub" & vbCrLf        
        .InsertLines x, Code
    End With
     
    VBA.UserForms.Add (Form.Name)
    Set CreationFormAvecBouton = UserForms(UserForms.Count - 1)
 
End Function
 
Sub DelComp(ByVal Nom As String)
    With ThisWorkbook.VBProject.VBComponents
        .Remove .Item(Nom)
    End With
End Sub
 
Function Coucou(ByVal Chaine As String) As String
    Sh1.Cells.Clear
    Sh1.Cells(1, 1) = Chaine
End Function


Message édité par kiki29 le 09-02-2007 à 05:10:31
n°1512297
Milli2048
J'assume mon pseudo a numéral
Posté le 08-02-2007 à 16:35:17  profilanswer
 

Bonjour, je cherche a faire du control dynamique mais pas moyen d'utiliser la fonction "set". Il me dit que la fonction n'est plus utilisée
Set ctl = Me.Controls.Add("Forms.Label.1", "label" + Trim(Str(c)))  
 
Je ne peut donc pas créer un controle a partir de chaine de caractere, avez vous une solution?  
(je suis sous VB2003)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  utiliser un evenement sur un controle créé dynamiquement

 

Sujets relatifs
Crée un dossier du jourPause du programme en attendant un évènement
[Résolu] [Visual Basic] Modifier et utiliser un composant MSFlexGridUtiliser le compilateur founi avec VC++6 avec un autre IDE?
[ARM] 3 petits exos en assembleur - Aidez moi svp je suis en controle[C# .NET 2.0] Un contrôle ajouté disparaît qd on reload la page
Evenement ImageButton.ClickFormulaire qui crée une page
[python-blender] modifier un mesh après l'avoir crééFaire afficher un JPanel lors d'un evenement avec Actionlistener
Plus de sujets relatifs à : utiliser un evenement sur un controle créé dynamiquement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR