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 :

macro dans une macro [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut macro dans une macro
    Bonjour,

    Ecrire des macros? Je commence à m'y habituer. Mais alors une macro qui crée un sheet avec des boutons de macros dedans?? là j'avoue je n'en sais absolument rien comment faire...

    Je sais que je pose beaucoup de questions, et que ça vous fait ch***er, mais c'est simplement par envie d'apprendre

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Le forum est certes utile. attention à la langue.
    mais il y a aussi la FAQ et les tutos entre autre
    un début de réponse ici http://excel.developpez.com/faq/inde...tCommandButton
    Bonne lecture et application.

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut
    Merci, c'est résolu

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut
    Bonjour,

    Désolé je dois reouvert ce sujet car j'ai une question

    Avec cette méthode on peut ajouter dynamiquement une macro dans une feuille via une macro

    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
     'Ajout CommandButton1 dans la feuille
        Set Obj = s.OLEObjects.Add("Forms.CommandButton.1")
        With Obj
            .Left = 550 'position horizontale
            .Top = 100 'position verticale
            .Width = 180 'largeur
            .Height = 30 'hauteur
            .Object.BackColor = RGB(235, 235, 200) 'Couleur de fond
            .Object.Caption = "Bouton1"
        End With
     
       'Paramètres pour la création de la macro:
        laMacro = "Sub CommandButton1_Click()" & vbCrLf
        '...code...
        laMacro = laMacro & "End Sub"
     
        With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
            x = .CountOfLines + 1
            .InsertLines x, laMacro
        End With
    Dans la partie *Paramètres pour la création de la macro* , ça paraît lisible quand on créer des macros simple genre "Hello World", mais si on doit ajouter un code assez long, ça risque de devenir difficile à lire, car à chaque fois on doit faire une concaténation de la ligne précédente.

    serait-il possible de mettre le code dans une procédure, et lors de la création du bouton on ajoute simplement un appel de celle-ci, par exemple :

    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
     
    Sub ma_procedure()
     
          ...1000 lignes de code...
     
    End Sub 
     
    Sub ma_macro()
     
    ...code...
     
    'Ajout CommandButton1 dans la feuille
        Set Obj = s.OLEObjects.Add("Forms.CommandButton.1")
        With Obj
            .Left = 550 'position horizontale
            .Top = 100 'position verticale
            .Width = 180 'largeur
            .Height = 30 'hauteur
            .Object.BackColor = RGB(235, 235, 200) 'Couleur de fond
            .Object.Caption = "Bouton1"
        End With
     
       'Paramètres pour la création de la macro:
        laMacro = "Sub CommandButton1_Click()" & vbCrLf
        laMacro = laMacro & "ma_procedure" & vbCrLf
        laMacro = laMacro & "End Sub"
     
        With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
            x = .CountOfLines + 1
            .InsertLines x, laMacro
        End With
    ...code...
    J'ai essayé mais ça ne semble pas marcher

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    écris la sub ma_procedure dans un module général

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut
    j'ai eu l'erreur "Subcript out of range"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Set s = Sheets("Price Index")
     
    laMacro = "Sub CommandButton1_Click()" & vbCrLf
        laMacro = laMacro & "correct_topline" & vbCrLf
        laMacro = laMacro & "End Sub"
     
        With ThisWorkbook.VBProject.VBComponents(s.Name).CodeModule
            x = .CountOfLines + 1
            .InsertLines x, laMacro
        End With
    La macro correct_topline est dans un module standard

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

Discussions similaires

  1. utiliser une macro dans une macro
    Par Calimero33 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2010, 17h48
  2. Exécuter une macro dans une autre macro
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 13h17
  3. résultat d'une macro dans une liste déroulante.
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/01/2008, 15h58
  4. bouton d'appel d'une macro dans une feuille excel avec défilement
    Par fabrice44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/01/2008, 15h30
  5. Exécution d'une macro dans une base Access en VB6
    Par Safaritn dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/05/2007, 17h00

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