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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 12
    Points : 4
    Points
    4

    Par défaut Créer un code CommandButton_click par macro

    Bonjour,
    Je souhaite ajouter dynamiquement des contrôles dans une userform, ce qui ne pose pas de problème. Mais une fois qu'on a ajouté un CommanButton, comment créer le code associé ?



    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
    Private Sub UserForm_Initialize()
     
    Dim Obj As Control
     
    Set Obj = Me.Controls.Add("forms.commandbutton.1")
    For iTF2 = 2 To UF1.NbP.Value 'Nombre de fichiers de données à ouvrir
    With Obj
    .Name = "CB" & iTF2 & "Ax1"
    .Caption = "..."
    .Left = 270
    .Top = 42 + 18 * (iTF2 - 1)
    .Height = 18
    .Width = 24
    End With
    Next iTF2
    End Sub

    Pour la création du code associé au bouton précédemment créé, j'ai tenté ce code qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Création macro bouton
    Set VBComp = ThisWorkbook.VBProject.VBComponents("UFTF2")
    With VBComp.CodeModule
    .insertlines .countoflines + 1, "Sub CB" & iTF2 & "Ax1_Click()"
    .insertlines .countoflines + 1, "Call ImportData"
    .insertlines .countoflines + 1, "End Sub"
    End With

    Est-ce que quelqu'un parmi vous aurait une idée ?

    Merci de votre aide.

  2. #2
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 285
    Points : 2 185
    Points
    2 185

    Par défaut

    Il faut créer un module de classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public WithEvents mybutton As CommandButton
    Private Sub mybutton_Click()
    MsgBox "Bouton cliqué =" & mybutton.Name
    Call importdata
    End Sub
    et dans le formulaire
    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
     
    Option Explicit
    Dim cmdArray() As New mybutton
    Private Sub UserForm_initialize()
    ' event of a command button which will create a new command button dynamically and assign code to it.
      Dim obj As Control
        Dim iTF2 As Long
        For iTF2 = 1 To 4    'UF1.NbP.Value
            Set obj = Me.Controls.Add("Forms.CommandButton.1", "CB" & iTF2 & "Ax1", False)
            With obj
                .Caption = "..."
                .Left = 1
                .Top = 42 + 18 * (iTF2 - 1)
                .Height = 18
                .Width = 24
                .Visible = True
            End With
     
            ReDim Preserve cmdArray(1 To iTF2) 'UF1Nbp.value
            Set cmdArray(iTF2).mybutton = obj
           ' Set obj = Nothing
        Next iTF2
    End Sub
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 12
    Points : 4
    Points
    4

    Par défaut

    Bonjour,

    Merci Garuda pour ce code. En fait, au lancement, j'ai une erreur de compilation sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmdArray() As New mybutton
    Message : type défini par l'utilisateur non défini.

  4. #4
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 285
    Points : 2 185
    Points
    2 185

    Par défaut

    Il faudrait poster tout le code du module de classe "Mybutton"
    L'erreur provient du fait qu'il ne trouve pas le module de classe
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 12
    Points : 4
    Points
    4

    Par défaut

    J'ai créé un module de classe qui s'est auto-appelé "Classe1" et j'y ai copié le code que vous m'avez donné tel quel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public WithEvents mybutton As CommandButton
    Private Sub mybutton_Click()
    MsgBox "Bouton cliqué =" & mybutton.Name
    Call importdata
    End Sub
    J'ai ensuite adapté mon code formulaire avec l'autre code. Au passage, je ne comprends pas la ligne "Redim preserve..."

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 12
    Points : 4
    Points
    4

    Par défaut

    Bonjour,

    Je suis toujours bloqué avec mon code. Visiblement le module de classe n'est pas reconnu.
    Quelqu'un aurait un idée de comment faire ?
    Merci d'avance

Discussions similaires

  1. [XL-2003] Protéger le code VBA par macro
    Par pitoumad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/07/2010, 06h22
  2. Créer et lire un fichier wav par macro
    Par fred65200 dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/01/2009, 19h40
  3. Problème d'insertion de code par macro
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/01/2008, 20h31
  4. Maj le code VBA par une macro extérieure
    Par benpinta dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/10/2007, 09h16
  5. Ecrire par macro du code dans un module
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/09/2007, 01h50

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