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 :

Récupérer un bout de code VBA dans une cellule [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Developpeur d'outils de pilotage
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur d'outils de pilotage

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut Récupérer un bout de code VBA dans une cellule
    Bonjour à tous,

    J'ai fais des recherches auprès de notre ami google. Mais je n'arrive pas ou je n'utilise pas les bons mots clés pour trouver une réponse à ma question.
    Ma question étant :
    - Si j'ai un bout de code VBA écrit dans une cellule, est-ce que je peux récupérer la valeur (donc le bout de code VBA) et l’exécuter sur ma macro ?

    Je m'explique. Je réalise une macro qui centralise des données (la macro sera exécuter toutes les semaines). Et je réalise avec toutes ses données, plusieurs TCDs. J'ai essayé de réfléchir aux différentes interfaces pour laisser l'utilisateur créer de nouveaux TCDs dans le futur et les automatiser. Mais je n'y arrive pas, il y a trop de détails, trop de choix, trop de complexités. Si je fais au plus simple, cela manquera de souplesse. Si je fais plus souple, cela sera trop complexe pour l'utilisateur. Et je veux éviter que l'utilisateur aille dans la macro.
    Par conséquent j'ai pensé à l'enregistreur de macro. Si l'utilisateur veut ajouter un nouveau TCD, dans le futur. Il fait une première fois son TCD pour déterminer ce qu'il veut. Puis il active l'enregistreur et il refait son TCD. Enfin il suffira qu'il copie-colle le bout de code dans une cellule. Et puis je fais le reste dans ma macro principale Main().

    Plus concrètement, ce que je souhaiterais avoir c'est que cellule A1 ait un bout de code VBA, ce qui donnerais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ActiveSheet.Range("A1").Value=" With ActiveWorkbook.PivotCaches.Create(xlDatabase, "BaseDonnée", xlPivotTableVersion12)
               .CreatePivotTable TableDestination:=ActiveCell, TableName:="TCD1"
            End With
     
            With ActiveSheet.PivotTables("TCD1").PivotFields("Sillon")
                .Orientation = xlPageField                                                    
                .Position = 1
            End With
            With ActiveSheet.PivotTables("TCD1").PivotFields("TER")
                .Orientation = xlRowField                                                      
                .Position = 1
            End With"
    Et dans ma macro Main(), je voudrais exécuter le code situé dans ActiveSheet.Range("A1").Value comme s'il était écrit dans ma macro

    P.S.: Je suppose que ce que je demande est possible. Néanmoins je n'en suis pas certain.
    J'espère que vous avez réussi à comprendre ce que j'ai écrit.

    Merci à tous ceux qui aurons lu jusqu'ici.
    Et merci encore plus à ceux qui apporteraient une aide ou une solution.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je ne suis pas certain de bien comprendre...
    Si tu laisses l'utilisateur créer une macro (enregistreur) pourquoi vouloir écrire ce code en cellule puisqu'il se trouve déjà dans le code du classeur (?!)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 105
    Par défaut
    Bonjour,

    En fait ce que tu cherches, c'est écrire du VBA en VBA. Voila l'idée. A peaufiner
    Il te faut tester la dernière ligne valide du code car tu n'auras pas toujours le même nombre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim Wb As Workbook
        NomClasseur = ActiveWorkbook.Name
        n = 1
        Repeat
            LeCode(n) = ActiveSheet("nomFeuille").Cells(n,1).Value
            n=n+1
        Until  ActiveSheet("nonFeuille").Cells(n,1).Value = ""
        Set Wb = Workbooks(NomClasseur)
           For I = 1 To n-1
                Wb.VBProject.VBComponents("Feuil" & X).CodeModule.InsertLines I, LeCode(I)
           Next I
    Cdt, NC

  4. #4
    Membre averti
    Homme Profil pro
    Developpeur d'outils de pilotage
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur d'outils de pilotage

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut
    J'ai oublié de mentionner, lorsque je centralise les données. Je crée un fichier "résultat.xlsx". Par conséquent mon utilisateur, s'il crée la macro. Elle sera associé au fichier "résultat.xlsx". Alors que ma macro Main(), elle se situe sur un fichier "procédure.xlsx"

    Merci de ton intervention.

    Oui c'est ça, je l'ai un peu changer pour faire un premier test. Et ça valide ce que je souhaitais avoir.
    Merci !

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

Discussions similaires

  1. [AC-2003] Code VBA dans une bibliothèque
    Par jax54000 dans le forum Modélisation
    Réponses: 10
    Dernier message: 06/03/2010, 20h53
  2. Récupérer un bout de fichier texte dans une variable
    Par killerman31 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 15/01/2009, 12h03
  3. Inserer du Code VBA dans une prodedure stockée
    Par Soulkeum dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/09/2007, 12h23
  4. Inserer du code vba dans une macro
    Par gadget27 dans le forum Général VBA
    Réponses: 4
    Dernier message: 03/05/2007, 13h35
  5. Affectation code VBA dans une feuille xls
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/02/2007, 13h52

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