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 :

Créer un bouton par un code VBA et affecter une macro


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut Créer un bouton par un code VBA et affecter une macro
    Bonjour,

    J'ai créé une macro VBA dans un module Excel d'un classeur source qui permet de générer un nouveau fichier Excel un classeur cible.

    Dans le classeur cible, je souhaiterais avoir un bouton qui permet de mettre à jour certaines feuilles. J'arrive à créer le code pour créer le bouton dans on classeur cible, par contre je n'arrive pas à affecter une macro.

    Voici le code de ma macro dans le classeur source:

    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
        Dim Code As String
        Dim Objet As OLEObject
        Dim X As String
        Dim NextLine As Long
     
        ThisWorkbook.Worksheets(1).Activate
     
         Set Objet = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
            , DisplayAsIcon:=False, Left:=111, Top:=81.75, Width:=368.25, Height _
            :=116.25)
     
        Objet.Object.Caption = "Mise à jour"
        Objet.Name = "MAJ"
     
     
        Code = "Private Sub MAJ_Click()" & vbCrLf
        Code = Code & "Sheets(""ThisWorkbook.Worksheets(1).name"").select" & vbCrLf
        Code = Code & "End Sub"
     
        With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
        NextLine = .CountOfLines + 1
        .Insertlines NextLine, Code
        End With
    Le bouton se crée bien dans mon classeur cible, par contre lorsque je clique dessus, le code "MAJ" ne se lance pas.

    Je vous remercie par avance si vous avez des idées pour faire fonctionner le code.

    Cakola

  2. #2
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    J'ai regarder de mon côté avec l'enregistreur de macro et j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        ActiveSheet.Buttons.Add(410.25, 232.5, 57, 39.75).Select
        Selection.OnAction = "updateTable"
    End Sub
    Essaie de regarder du côté de la propriété "OnAction" (La macro que j'ai assigné au bouton est "updateTable").

  3. #3
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut
    J'ai regardé la fonction "Onaction" mais ça ne semble pas fonctionner dans mon programme..

  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
    Salut, lire et assimiler Visual Basic Editor

  5. #5
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut
    Merci pour ce guide.

    J'arrive à lancer la macro sur mon bouton, par contre le code que je souhaite généré avec ce bouton est assez long.

    Il y a-t-il une fonction qui permet d'appeler une macro déjà écrite "Macro()" avec le code ci-après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            'Spécifie le contenu de la macro qui sera associée au bouton
                LaMacro = "Sub monBouton_Click()" & vbCrLf
                LaMacro = LaMacro & "Application. run"Macro"" & vbCrLf
                LaMacro = LaMacro & "End Sub"
    Je vous remercie par avance.

Discussions similaires

  1. [AC-2007] créer bouton dynamiquement en code VBA
    Par xargin dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/08/2011, 10h35
  2. Réponses: 2
    Dernier message: 14/10/2009, 09h57
  3. [VBA-E] Affecter une macro a un autre classeur
    Par Mac Twist dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2007, 17h38
  4. Réponses: 10
    Dernier message: 24/08/2006, 20h52
  5. [VBA-E] Comment créer un bouton ds une wksheet par un code vba
    Par moicwill dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2006, 18h12

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