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 :

Comment creer une macro qui crée une macro puis l'appelle ? [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Par défaut Comment creer une macro qui crée une macro puis l'appelle ?
    Bonjour,
    Je cherche à créer une macro qui en crée une autre puis qui l'appelle.

    Tout va bien, sauf que j'ai un message du compilateur qui me dit que la macro que j'appelle n'existe pas...
    Et pour cause, elle n'est pas encore créée...

    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
    48
    49
    50
    51
     
    Function CreMod(NomMod As String, Optional ModCree As Boolean) As Boolean
     
    Dim VBComp As VBComponent
    Dim VF_x As Boolean
    Dim X_x As Integer
    Dim NomSub As String
     
     
    'Ajoute un module standard dans le classeur
    '1) Le module à créer ne doit pas exister
    On Error Resume Next
    Set VBComp = ThisWorkbook.VBProject.VBComponents(NomMod)
    If VBComp Is Nothing Then
        VF_x = False
    Else
        VF_x = True
        MsgBox "Le Module " & NomMod & " existe déjà" & Chr(10) & " Error code : 01"
        Exit Function
    End If
     
    Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(1)
    'Renomme le module
    VBComp.Name = NomMod
     
     
    ' Ecriture du code dans le module
     
     
    '1) Ecriture du code ligne à ligne dans le module
    NomSub = "TestSub"
    With VBComp.CodeModule
            X_x = .CountOfLines
    '        .InsertLines X_x + 1, "Attribute VB_Name = ""TestCreationModule""" ' A utiliser pour creation d'un fichier .bas
            .InsertLines X_x + 2, "Option Explicit"
            .InsertLines X_x + 3, ""
            .InsertLines X_x + 4, "sub " & NomSub & "()"
            .InsertLines X_x + 5, "' Test de création automatique de Module"
            .InsertLines X_x + 6, "Debug.Print ""Je suis passé par TestSub "" & Now"
            .InsertLines X_x + 7, "End Sub"
     
    End With
     
     
    '2) La proc est lancée
     
    TestSub
     
    CreMod = 1
     
    End Function
    Comment faire ?
    J'ai aussi essayé de mettre le nom de la Sub dans une variable, sans plus de succès...

    Merci de vos aides.

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour Dersoux,

    Je ne comprends pas bien la finalité de devoir/vouloir créer une macro par code ?

    Pourriez-vous m'éclairer ?

    Bav,

    MFoxy

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Par défaut
    Bonjour mfoxy,
    Disons que c'est une manière de protéger du code...

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,
    Citation Envoyé par Dersou1 Voir le message
    Disons que c'est une manière de protéger du code...
    Je ne vois pas en quoi ça protègerait quoi que ce soit !
    Si tu veux protéger le code, laisses tomber VBA et orientes toi vers un langage "protégeable".

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Par défaut
    Hello.

    Ce ne sera pas protégé… mais la commande est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run NomMod & "." & NomSub
    Ou un truc du style ^^ (pas testé)

    ++
    Wouana

  6. #6
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Par défaut
    Merci beaucoup à wouana19

    Ca marche !!!

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

Discussions similaires

  1. Comment creer une requete qui teste la similarite de plusieurs objets
    Par antoine8410 dans le forum Modélisation
    Réponses: 5
    Dernier message: 22/11/2012, 21h54
  2. Réponses: 0
    Dernier message: 11/11/2010, 08h30
  3. Comment creer une BD qui contient d'image
    Par mamou30 dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/03/2007, 16h36
  4. Réponses: 2
    Dernier message: 08/05/2006, 20h23
  5. [TP]comment creer une disquette bootable (les fichiers)
    Par ludovic5532 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/10/2003, 18h46

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