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 :

[Userform] Attribuer un évènement a un control ajouter dynamiquement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut [Userform] Attribuer un évènement a un control ajouter dynamiquement
    Bonjour,
    J'ai créé dynamiquement des labels sur une userform. J'aimerai pouvoir attribuer du code pour l'evement click() sur les labels créer.
    J'ai ajouté dans un premier temps les parties de codes suivantes en dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub MonLabel_click()
      MsgBox "Coucou"
    end sub
    Or il se trouve que les labels ne réagissent pas du tout aux stimulii. Pourquoi?

    Cette non réaction me gène un peu. J'avais dans l'idée de rajouter dynamiquement le code derrière mais je suis refroidi. J'aimerai savoir si lorsque je rajouterai dynamiquement le code le problème s'en ira. Et dans le cas contraire comment faire?

    @micalement,

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Regarde ici si l'exemple donné par fring te conviendrait... mais je pense que oui

  3. #3
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    j'ai tenté de faire quelque chose par moi même mais je ne comprends pas pourquoi j'ai une erreur.
    le code est le suivant :
    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
    Sub EncodeLeBouton(ByRef stNomLabel As String)
    'rajoute le code lier au label
     
    Dim x As Integer
    Dim stMonCode As String
    With ThisWorkbook.VBProject.VBComponents(ctmaframe).CodeModule
        .CreateEventProc "Click", stNomLabel 
        x = .ProcStartLine(stNomLabel & "_Click", vbext_pk_Proc)
     
        stMonCode = "InscritContact " & stNomLabel 
        .InsertLines x + 2, stMonCode
    End With
     
    'ferme la fenetre vba
    Application.VBE.MainWindow.Visible = False
     
    End Sub
    Mon erreur m'indique : gestionnaire d'évenement non valide. Pourquoi? °_° je ne vois pas du tout...

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Supposons que tu as créer 5 Labels, Label1 à Label5
    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
    Sub creation_code()
    Dim i As Byte, Col As New Collection
     
    For i = 1 To 5
        Col.Add "Private Sub Label" & i & "_Click()"
        Col.Add "MsgBox " & """Vous venez de cliquer sur le Label " & i & ""
        Col.Add "End sub"
    Next
     
    With ActiveWorkbook.VBProject.VBComponents("UserForm1").CodeModule
        For i = 1 To Col.Count
            nextLine = .CountOfLines + 2
            .insertlines nextLine, Col.Item(i)
        Next
    End With
     
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    Mais il me semble que ça ne gènère pas l'evement clickable.

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Ahh bin s'il te semble, tu dois probablement avoir raison, ne perd surtout pas ton temps à essayer ce qu'on te propose.

Discussions similaires

  1. comment sauvegarder les controles ajoutés dynamiquement?
    Par Chrysostome dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 04/04/2013, 12h17
  2. persistance controles ajoutes dynamiquement
    Par eddymercury dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/07/2011, 16h21
  3. Evenements de controles ajoutés Dynamiquement
    Par AirbusA330 dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/09/2009, 00h05
  4. Evenement sur controls ajouter dynamiquement
    Par TheBlackReverand dans le forum ASP.NET
    Réponses: 0
    Dernier message: 11/02/2009, 12h54
  5. Réponses: 2
    Dernier message: 10/05/2005, 15h54

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