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 :

Associer un code VBA à un bouton créé dynamiquement


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Associer un code VBA à un bouton créé dynamiquement
    Bonjour à tous,

    J'ai tenté de suivre des exemple de plusieurs forums et aussi de la réponse à la FAQ mais sans succès: http://excel.developpez.com/faq/?pag...tCommandButton

    Context : Dans mon code, lorsque je clic sur le bouton "valider" de mon userform, je créé une feuille que je renomme "Requete", je fais différentes actions dessus en fonction des infos saisies dans le userform, je fais disparaitre le userform, et j'insère un bouton "Sortie" qui permettra de supprimer la feuille requête et de faire réapparaître un userform.
    Et ma dernière étape ne fonctionne pas, mon bouton apparait, mais impossible d'y associer un code lors du clic.

    Si vous avez des pistes ou des idées, n'hésitez pas.
    Merci par avance pour votre aide.

    Voilà ce que j'ai jusqu'à maintenant:

    Code vba : 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
    Sub CB_valider_liste_doc_Click() 'valider
    
    Dim BoutonSortie As OLEObject
    
    'Creation de la feuille Requete
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "Requete"
    
    
    'Diverses actions
    '...
    
    
    'Masquer le Userform
    UF_Liste_complete.Hide
    
    
    'Creation du bouton Sortie
    Set BoutonSortie = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Commandbutton.1")
    With BoutonSortie
        .Left = 1
        .Top = 1
        .Width = 72
        .Height = 24
        .Name = "BoutonSortie"
        .Object.Caption = "Sortie"
    End With
    
    
    'Affectation de la macro au bouton
    'Partie manquante à compléter
    
    End Sub
    
    'Macro à associer
    
    Sub BoutonSortie()
    
        Sheets("User guide").Select
        Application.DisplayAlerts = False
        Sheets("Requete").Delete
        Application.DisplayAlerts = True
        UF_Menu_principal.Show
    
    End Sub

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Re : Associer un code VBA à un bouton créé dynamiquement
    Bonjour Floppy,

    Il y a plusieurs erreurs flagrantes dans ton code, tu dois sûrement débuter en VBA.
    Voici les corrections que je te propose sur ton code :


    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
    Sub CB_valider_liste_doc_Click() 'Valider
     
    Dim BoutonSortie As OLEObject
     
    'Création de la feuille Requete
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "Requete"
     
     
    'Diverses actions
    '......
     
     
    'Masquer le Userform
    UF_Liste_complete.Hide
     
     
    'Création du bouton Sortie
    Set BoutonSortie = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Commandbutton.1")
    With BoutonSortie
    .Left = 1
    .Top = 1
    .Width = 72
    .Height = 24
    .Name = "BoutonSortie"
    .Object.Caption = "Sortie"
    End With
     
     
    'Affectation de la macro au bouton
    'Partie manquante à compléter
     
    End Sub
     
     
     
    'Macro à associer
     
    Sub BoutonSortie()
     
    Sheets("User guide").Select
    Application.DisplayAlerts = False
    Sheets("Requete").Delete
    Application.DisplayAlerts = True
    UF_Menu_principal.Show
     
    End Sub

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Une piste en utilisant une feuille modèle cachée.

    1) Créez une feuille et nommez la "___modele"
    2) Créez, à la main, un CommanButton1
    3) Dans la fenêtre de code de la feuille, copiez le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1()
    Sheets("User guide").Select
    Application.DisplayAlerts = False
    Sheets("Requete").Delete
    Application.DisplayAlerts = True
    UF_Menu_principal.Show
    End Sub
    4) Masquez la feuille

    5) Changez le code de votre procédure CB_valider_liste_doc_Click par le code 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
    18
    19
    Sub CB_valider_liste_doc_Click() 'valider
    '### Constante à adapter ###
    Const MON_MODELE As String = "___modele"
    '###########################
     
    'Creation de la feuille Requete
    Dim S As Worksheet
    '---
    Set S = Sheets(MON_MODELE)
    S.Visible = xlSheetVisible
    S.Copy After:=Sheets(Sheets.Count)
    S.Visible = xlSheetVeryHidden
    '---
    Sheets(Sheets.Count).Name = "Requete"
     
    'Diverses actions
    '...
     
    End Sub

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci, je regarde ça et je vous tiens informé.

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Avec un bouton "Shape" moins lourd à gérer pour ce que tu veux faire :
    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
     
    Sub CB_valider_liste_doc_Click() 'valider
     
        Dim Fe As Worksheet
        Dim BoutonSortie As Shape
     
        'Creation de la feuille Requete
        Set Fe = Worksheets.Add(, Sheets(Sheets.Count))
        Fe.Name = "Requete"
     
     
        'Diverses actions
        '...
     
     
        'Masquer le Userform
        UF_Liste_complete.Hide
     
     
        'Creation du bouton Sortie
        Set BoutonSortie = Fe.Shapes.AddFormControl(xlButtonControl, 10, 10, 100, 20)
     
        With BoutonSortie
     
            .OnAction = "BoutonSortie" 'appel de la macro...
            .TextFrame.Characters.Text = "Supprimer la feuille"
     
        End With
     
    End Sub
     
    'Macro à associer
     
    Sub BoutonSortie()
     
        Sheets("User guide").Select
        Application.DisplayAlerts = False
        Sheets("Requete").Delete
        Application.DisplayAlerts = True
        UF_Menu_principal.Show
     
    End Sub
    Hervé.

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Hervé,
    ça marche impec', merci beaucoup.

    Désolé PMO2017, je n'ai pas eu le temps d'essayer ce weekend.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2000] Création automatique d'un bouton + association de code VBA
    Par Brendalf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/07/2010, 14h06
  2. comment associe t-on du code VBA à un bouton dans un userform
    Par AlexFred dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2010, 14h52
  3. Code VBA pour bouton de commande
    Par myster88 dans le forum VBA Access
    Réponses: 4
    Dernier message: 29/10/2008, 06h42
  4. Réponses: 2
    Dernier message: 14/05/2008, 16h18

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