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 :

Import macros des feuilles et modules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 84
    Par défaut Import macros des feuilles et modules
    Bonjour,

    Excusez-moi, c'est un peu long à expliquer au départ. Voici mon problème.

    J'ai un classeur Excel qui a des centaines de feuilles, avec des données dedans, et aussi il y a des macros dans ces feuilles. Les utilisateurs modifient constamment les données des feuilles. Moi, je dois faire évoluer les macros.

    Alors je prends une copie du classeur, je modifie les macros, et après quelques jours je demande le classeur aux utilisateurs pour mettre à jour les macros. Evidemment ma copie n'est plus à jour par rapport aux données, donc je ne peux pas leur fournir ma copie. Il faut que je mets à jour les macros dans leur classeur.

    Comme il y en a beaucoup de feuilles, faire ça à la main avec copie/coller c'est pas génial. Alors je voulais faire ça avec Export/Import. Je fais donc un Export des macros de mon classeur avec le code suivant (que j'ai trouvé sur internet et qui marche très bien):
    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
    Sub ExporterFrmEtModules()
        ' Pour que ça marche, faire Excel/Outils/Options/Sécurité/Sécurité des macros/Faire confiance au projet Visual Basic
        Dim rep1 As String
        rep1 = "MesMacros"
        rep1 = ThisWorkbook.Path + Application.PathSeparator + rep1 + Application.PathSeparator
        Dim LeFich
        For Each LeFich In ThisWorkbook.VBProject.VBComponents
            Select Case LeFich.Type
            Case 1
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".bas"
            Case 2
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".cls"
            Case 3
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".frm"
            Case 100
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".cls"
            End Select
        Next
    End Sub
    Ce code produit des fichiers comme Feuil1.cls, ThisWorkbook.cls, Module1.bas, UserForm1.frm, UserForm1.frx.

    Le problème est comment faire l'import ? En fait je veux fair un Update des macros de mes feuilles et modules. J'ai essayé de mettre dans le classeur cible le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ImporterFrmEtModules()
        Dim NomFich
        Dim rep1 As String
        rep1 = "MesMacros"
        rep1 = ThisWorkbook.Path + Application.PathSeparator + rep1 + Application.PathSeparator
        NomFich = Dir(rep1 + "*.*")
        Do While NomFich <> ""
            NomFich1 = rep1 + NomFich
            'MsgBox NomFich1
            Application.VBE.ActiveVBProject.VBComponents.Import (NomFich1)
            NomFich = Dir
        Loop
    End Sub
    Les noms des fichiers sont bien récupérés, pas de pb de ce coté là.

    Le problème est qu'il ne fait pas la liaison entre le nom du fichier importé et le nom de mon objet Excel. Il fait les imports comme s'il s'agissait de nouveaux objets, en donnant de nouveaux noms à ces objets. En plus mes feuilles ont des noms comme par ex. Feuil1(Accueil), tandis que dans les fichiers exportés le nom "Accueil" n'apparait même pas.

    Avez-vous une suggestion svp ?

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    a chaud!

    en essayant de supprimer les anciens modules avant de faire l'import, ça donne quoi?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 84
    Par défaut
    J'ai supprimé une partie des modules. Pour les modules que j'ai supprimé, ça marche, il recrée le module avec le bon nom et contenu. Pour les modules que j'ai pas supprimé, il crée de nouveaux copies avec des noms différents. Donc pour les modules c'est OK, il suffit de les supprimer avant l'import.

    Pour les feuilles, il crée des objets nouveaux dans un nouveau truc qu'il appelle "Modules de classe". Là, ça va pas, parce que je ne peux supprimer les feuilles.

    Pour le UserForm1 ça marche aussi si je le supprime avant, quoi qu'il donne une message d'erreur "Erreur d'exécution '50057': Impossible de charger 'UserForm1.frx'."

  4. #4
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    pour les feuilles,
    tu importes, tu supprime l'ancienne, tu renomme la nouvelle

    non??

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

Discussions similaires

  1. [XL-2010] Utilisation de modules macro dans des feuilles protégées par mot de passe
    Par davimaje dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 14/11/2014, 17h32
  2. [XL-2007] Importer nom des feuilles classeur fermé
    Par sagull dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/11/2012, 15h13
  3. [E-07] Importer des feuilles excel -->macro
    Par arsenic_menthe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/02/2009, 08h14
  4. Exécution Macro VBA et actualisation des feuilles
    Par DjJEJ83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/07/2007, 10h08
  5. [VBA-E] Lancement de la macro avant l'ouverture des feuilles
    Par repié dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 16h07

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