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 :

Conserver une macro en copiant une des feuilles dans un nouveau classeur [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 89
    Points
    89
    Par défaut
    Bonjour,
    Je suis en train d’intégrer une macro dans un fichier avec plusieurs feuilles. Comme les feuilles peuvent ensuite être exportée individuellement, je pensait intégrer ma "Public Function" dans chaque feuille mais ça ne fonctionne plus.
    Comment faut-il déclarer une fonction pour pouvoir la dupliquer dans plusieurs feuilles pour qu'elle fonctionnent de façon a ce indépendante?
    Comment faire garder ma fonction en copiant ma feuille?
    Merci

    J'ai oublié de préciser que je peux pas demander a l'utilisateur de passer par l’éditeur VBA pour copier du code ou autre.

  2. #2
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut Rappel juste histoire d'ajouter de l'eau a ton moulin
    Bonjour,

    tout d'abord c'est des private function ou Private sub qui sont lié à une feuille comme les macros événement.

    je ne sais pas ce que tu veux faire exactement mais peut-être peux-tu utiliser les modèles Excel .XLTM (n'oublis pas le m ds l'extension obligatoire pour garder des macros).

    Une dernière solution migrer chez les utilisateurs des classeurs de macro personelles (Personnal.xlsb si ma memoire est bonne) mais c'est pas toujours possible.
    ici (à mon boulot c'est bloqué) ;-(

    bon weekend

  3. #3
    Membre régulier Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 89
    Points
    89
    Par défaut Précisions
    Bonjour,
    Je ne peux malheureusement pas faire ce que je veux:
    - le fichier est en .xls >> version de compatibilité 97-2003
    - il contient déjà du code
    - le projet est verrouillé habituellement.

    J'ai une fonction (Public Function) dans une module qui est utilisée comme formule dans mes feuilles.
    J'avais d'abord pensé intégrer le code du module dans chaque feuille susceptible d’être copier dans un nouveau classeur.
    J'ai essayé de mettre la fonction en "Private Function" mais ça ne marche pas. Soit c'est normale, soit je m'y suis mal pris. J'avais pourtant déjà intégrer du code de procédure dans le code de la feuille. Est-ce différent pour les fonction? Ou est-ce parce qu'il y a plusieurs fois le même nom de Private Function?

    J'entrevois une autre solution qui serait d'automatiser la copie de la feuille dans un nouveau fichier et de copier le module qui contient ma fonction.
    Ça a l'air faisable mais le fait que le projet soit verrouillé va m'obliger a créer un module vierge puis a copier ligne a ligne ma fonction. ça se complique
    Je ne l'ai pas encore essayé mais j'ai glaner des portions de code corrspondant ce que je veux faire
    Pour créer un nouveau module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub AddModuleToProject()
            Dim VBProj As VBIDE.VBProject
            Dim VBComp As VBIDE.VBComponent
     
            Set VBProj = ActiveWorkbook.VBProject
            Set VBComp = VBProj.VBComponents.Add(vbext_ct_StdModule)
            VBComp.Name = "NewModule"
        End Sub
    Pour inserrer mes lignes , il faut automatiser la lecture / écriture de la fonction
    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
     
        Sub AddProcedureToModule()
            Dim VBProj As VBIDE.VBProject
            Dim VBComp As VBIDE.VBComponent
            Dim CodeMod As VBIDE.CodeModule
            Dim LineNum As Long
            Const DQUOTE = """" ' one " character
     
            Set VBProj = ActiveWorkbook.VBProject
            Set VBComp = VBProj.VBComponents("Module1")
            Set CodeMod = VBComp.CodeModule
     
            With CodeMod
                LineNum = .CountOfLines + 1
                .InsertLines LineNum, "Public Sub SayHello()"
                LineNum = LineNum + 1
                .InsertLines LineNum, "    MsgBox " & DQUOTE & "Hello World" & DQUOTE
                LineNum = LineNum + 1
                .InsertLines LineNum, "End Sub"
            End With
        End Sub
    Suis-je sur la bonne voie ou il y a-t-il plus simple?
    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Bonjour

    Juste pour te faire remarquer le titre :
    conserver une marco

  5. #5
    Membre régulier Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 89
    Points
    89
    Par défaut conserver une macro !
    Bonjour,
    Merci a dragonno pour sa participation

    Au cas ou, je reformule ma requête: il y a-t il un moyen simple de conserver une macro (ou un module) quand on déplace une feuille dans un autre classeur.
    Merci

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    J'ai regardé pour toi sur le net
    J'espère que ça pourra aller^^

    Tu peux créer une macro complémentaire, ainsi tu y auras toujours accès quel que soit ton fichier. Elle ne sera jamais à l'intérieur des fichiers.

    Pour faire une macro complémentaire, c'est tout pareil qu'une macro ordinaire, sauf que tu l'enregistres en format xla. Ensuite tu la charges depuis le menu Outils, Macros Complémentaires.

  7. #7
    Membre régulier Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 89
    Points
    89
    Par défaut De retour
    Bonjour, Merci Dragonno.
    J'ai pris le temps de me documenter mais j'aurais du mal a imposer les macro complémentaires dans mon entreprise. La moindre demande aux utilisateurs ou aux administrateurs demande une préparation et une argumentation béton et je doute cette astuce qui a l'air très pratique pour mon utilisation perso soit bien recu.
    En tout cas ça m'a fait découvrir la méthode avec les xla. Merci a toi

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    De rien, c'est avec plaisir

    Tu pourras argumenter que c'est utile à la productivité avec excel donc à l'entreprise et ça passera

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

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 13h51
  2. Réponses: 5
    Dernier message: 05/02/2015, 08h36
  3. Lancer une macro excel depuis une macro powerpoint
    Par toma65 dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 12/06/2007, 10h41
  4. Lancer une macro A via une macro B
    Par Selecteur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/06/2007, 17h48
  5. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 23h38

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