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 :

Add-In, fichier .xlam


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Par défaut Add-In, fichier .xlam
    Bonjour,

    Je souhaite copier le code d'une macro contenu dans un module de mon fichier .xlam dans un autre fichier excel.
    Le code suivant fonctionne mais il m'affiche un message d'erreur à la ligne Set modObj =Application.VBE.ActiveVBProject.VBComponents.Item("Graph"). Si je clique sur débogage et que je relance la macro elle se termine directement.
    C'est juste que la ligne Workbooks("Prévisions.xlam").Activate ne doit pas fonctionner et le fait d'ouvrir la fenêtre visual basic lors de débogage permet d'activer le fichier "Prévision.xlam".

    Le programme doit fonctionner en automatique, les utilisateurs ne doivent pas avoir à cliquer sur débogage et à relancer la macro.

    J'aurais voulu savoir comment résoudre ce problème. Y a-t-il un autre moyen d'activer un fichier .xlam pour récupérer le code d'un module? Existe-t-il un moyen automatique (à partir du code) d'ouvrir et de fermer l'éditeur visual basic sans que l'utilisateur ait à intervenir?

    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
    Sub ajout_macro(nom_fichier)
    'Copier la macro dans le fichier "RefStats"
        Dim strCode As String
        Dim vbCom As VBComponent
        Dim modObj As Object
     
        ' Select source document
        Workbooks("Prévisions.xlam").Activate
        ' Set object to the module you want to export.
        Set modObj = _
            Application.VBE.ActiveVBProject.VBComponents.Item("Graph")
        ' Place code in a string.
        strCode = modObj.CodeModule.Lines(1, modObj.CodeModule.CountOfLines)
        ' Select destination document
        Windows(nom_fichier).Activate
        ' Create a new module in workbook.
        'Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
            Set Wb = Workbooks(nom_fichier)
            Wb.VBProject.VBComponents("Feuil1").CodeModule.InsertLines 1, strCode
        ' Add code to new module from string variable.
        'Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
            .CodeModule.AddFromString (strCode)
    End Sub
    Merci à ceux qui prendront le temps de lire ce post.

    Bonne journée.

    Anne Lise

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ruban Fichiers > Options > Options avancées > (presque à la fin) Au démarrage, ouvrir tous les fichiers du dossier
    Dans le champ, tu mets un chemin de répertoire.
    Dans ce répertoire, tu places ton fichier xlam et il sera ouvert systématiquement quand tu ouvrira Excel.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Par défaut
    Bonjour Menhir,

    Merci pour ta réponse aussi rapide.
    En fait, le fichir xlam est toujours activé, j'ai toujours accès aux macros de mon fichier xlam, le problème est de l'activer "physiquement" comme on active un fichier excel classique pour travailler dessus sauf que l'activation du fichier xlam par code vba ne fonctionne pas comme les fichiers classiques et pour l'instant à part en ouvrant l'éditeur visual basic je n'ai pas trouvé d'autre solution.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Par défaut
    Bonjour galopin01,

    Il est bien coché dans complément. Toutes les macros du fichier marche correctement.
    Le souci est juste de l'activer "physiquement" pour récupérer le code d'un module.
    Pour un fichier excel classique, le .Activate permet d'activer le fichier et de travailler avec, de le modifier... mais cela ne fonctionne pas avec un fichier xlam.

    Arrivé à la ligne Set modObj = Application.VBE.ActiveVBProject.VBComponents.Item("Graph"), j'ai le message d'erreur "L'indice ne fait pas partie de la sélection" car "Graph" est un module du .xlam et non du point xlsm actif à ce moment là. Lorsque je relance la macro, il arrive à passer cette ligne parce que le fichier .xlam devient actif à l'ouverture de la fenêtre de l'éditeur visual basic.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si tu es sûre qu'il est ouvert dans ta session d'Excel, et qu'il n'est (surtout) pas protégé, tu as juste à cliquer sur son icône dans l'Explorateur de projets de l'éditeur VBE.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Par défaut
    Bonjour clémentmarcotte,

    Je suis bien d'accord avec toi mais j'aimerais faire la même chose par le code. Le but est que tout soit automatique, les utilisateurs ne doivent pas avoir de manipulations à faire.

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/03/2016, 11h29
  2. [XL-2010] workbooks.add sur fichier distant plante
    Par niocco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/02/2016, 12h17
  3. Chemin fichier XLAM
    Par Regor dans le forum Excel
    Réponses: 1
    Dernier message: 24/11/2013, 03h35
  4. [XL-2010] fichier CHM associé à un fichier XLAM
    Par Harry Covair dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/05/2012, 10h31
  5. [GIT]Annuler des add sur fichiers et dossiers avant commit
    Par student_php dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 03/01/2012, 18h37

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