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 :

Macro hors fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut Macro hors fichier excel
    Bonjour

    J'ai cherché sur le net mais difficile de formuler la question pour qu'elle compréhensible par les moteurs de recherche.

    J'ai créé une macro dans un fichier .xlsm . Elle prend les cellules de la première ligne et modifie les contenus selon certains critères.
    Quand je veux utiliser cette macro dans un autre fichier Excel, je dois d'abord ouvrir ce fichier.

    Est-ce que je peux enregistrer cette macro dans tout Excel pour pouvoir l'utiliser directement sans passer par cette ouverture de fichier ?
    Faire une sorte de macro générale en quelque sorte !

    Merci d'avance de votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour cela il faut utiliser un classeur suffixé xlam (macro complémentaire ou AddIn). Il y a d'autres possibilités mais celle-là est pour moi la meilleure option

    Voir mes billets sur le sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Merci pour la réponse !

    J'ai ouvert mon fichier xlsm et je l'ai exporté au format xlam.
    Ne trouvant pas mon fichier à l'endroit de mon fichier xlsm j'ai demandé à "l'enregistrer sous" avec le même nom et j'ai pu voir qu'il est en fait enregistré dans un dossier spécial lié aux addin Excel.
    J'ai fermé mon fichier xlsm et ouvert un autre classeur pour voir si je trouvais ma macro mais elle n'apparait pas. (menu Développeur puis bouton macro).
    En utilisant le bouton "Compléments Excel", je vois le nom de mon fichier d'origine en plus de "euro currency tools" et autre compléments disponibles. Je coche la case en pensant que ça rendra disponible les macros incluses dans mn fichier mais même en faisant ça, mes macros n'apparaissent pas dans la liste des macros disponibles.

    Si j'ouvre le code avec le bouton "Visual Basic", je vois bien une rubrique VBAProject dans laquelle il y a un module "Module1" dans lequel il y a le code de mes macros.

    Est-ce bien ce qui doit se passer ?
    Est-ce normal que mes macros n'apparaissent pas directement dans les macros disponibles ?
    Si non, est-ce qu'une solution complémentaire existe pour qu'elles apparaissent et soient accessibles directement ?

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Précision: en suivant le tuto sur votre site, j'ai ajouté un bouton qui appelle la macro et ça fonctionne.
    Ma question concerne bien la liste des macros disponibles après clic sur le boutons "macros"

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    La Procédure est-elle bien déclaré en "Public" ? (Public Sub ou Public Function)

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Elle ne l'était pas mais je viens de modifier et ça ne change rien.
    Ma macro pour normaliser les titres de colonnes n'apparait toujours pas dans les macros disponibles.
    Mais elle est bien présente dans VisualBasic dans VBAProject Module1 comme avant.

    Je viens de voir que si j'ouvre Excel, mon fichier xlam semble s'ouvrir parce que dans le répertoire dédié, je vois un fichier temporaire se créer qui disparait une fois que je referme Excel. L'addin est donc bien pris en compte à l'utilisation.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf erreur de ma part, la boîte de dialogue Macros n'affiche pas les procédures présentes dans un fichier xlam

    Que voulez-vous faire exactement ?

    Si c'est lancer une procédure présente dans votre fichier xlam, il y a plusieurs possibilités
    • Celles que je décris dans le chapitre UTILISATION DES PROCEDURES D'UN COMPLEMENT
    • Lancer la procédure depuis une procédure d'un classeur xlsm ou xlsb (voir ci-dessous)
    • Créer un menu dynamique qui est l'objet de mon prochain billet dans la série sur le sujet des "Macros complémentaires"

    Ces quelques lignes ci-dessous pourront peut-être vous aider

    ===== Extrait de mon prochain billet titré Macros complémentaires - Menu dynamique pour exécuter une procédure =====

    Lorsque l'on écrit une application pilotée par un fichier suffixé XLAM (Macro complémentaire ou Add-In) l'utilisateur doit pouvoir invoquer lui-même des procédures.
    Il y a plusieurs possibilités pour le faire, soit nous utiliserons la méthode Run, pour les Sub et les Function soit un menu pour les Menu.
    • Sub : la méthode Run de l'objet Application, l'utilisation de bouton Menu personnalisé piloté par exemple par l'objet CommandBar. C'est l'objet de ce billet.
    • Function : la méthode Run de l'objet Application

    Pour rappel, il est possible d'utiliser une fonction personnalisée directement depuis une cellule d'Excel

    Dans tous les exemples présentés ici, on suppose bien entendu que la macro complémentaire est chargée, voir le billet sur ce sujet Créer une macro complémentaire et Charger dynamiquement une macro complémentaire - Quelques procédures intéressantes

    METHODE RUN DE L'OBJET Application

    La méthode Run, exécute une procédure Sub, macro, ou invoque une fonction (Function). Elle peut être utilisée pour exécuter une macro écrite en VBA ou dans le langage de macro de Microsoft Excel, ou pour exécuter une fonction dans une DLL ou une XLL.

    La syntaxe est Application.Run NomMacro Arg_1, Arg_2, Arg_3,.......Arg_30 ou MsgBox Application.Run NomMacro Arg_1, Arg_2, Arg_3,.......Arg_30

    Important : Nous ne pouvons pas utiliser des arguments nommés avec cette méthode. Ils doivent donc être transmis par position

    Une procédure Sub
    sans paramètre La procédure se nomme ShowAbout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "ShowAbout"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par Papy214 Voir le message
    J'ai créé une macro dans un fichier .xlsm . Elle prend les cellules de la première ligne et modifie les contenus selon certains critères.
    Quand je veux utiliser cette macro dans un autre fichier Excel, je dois d'abord ouvrir ce fichier.
    Cette macro à l'air d'être spécifique à un type de fichier particulier.
    Je pense qu'il faut éviter de créer des xlam pour des cas trop spécifiques.
    Ceci d'autant plus, que la conception d'une macro xlam nécessite un code adapté beaucoup plus rigoureux qu'une simple macro spécifique à un fichier particulier.

    Si il s'agit de répliquer une macro dans tous les fichiers du même type, un modèle (.xltm) me semble plus simple et plus adapté.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  9. #9
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,

    Cette macro à l'air d'être spécifique à un type de fichier particulier.
    Je pense qu'il faut éviter de créer des xlam pour des cas trop spécifiques.
    Ceci d'autant plus, que la conception d'une macro xlam nécessite un code adapté beaucoup plus rigoureux qu'une simple macro spécifique à un fichier particulier.

    Si il s'agit de répliquer une macro dans tous les fichiers du même type, un modèle (.xltm) me semble plus simple et plus adapté.
    En fait, je fais régulièrement des imports de données depuis des fichiers Excel client vers une base MySQL.
    Avant de faire l'import effectif, je nettoie les titres de colonnes pour enlever des accents, des symboles, etc.
    A chaque nouvel import, pour utiliser la macro depuis mon fichier , il faut que j'ouvre on fichier de macros pour les voir affichées dans les macros disponibles quand je clique sur le bouton macros.
    Je voulais les avoir toujours disponibles dans cette liste sans devoir à chaque fois ouvrir le fichier en question.
    Mais déjà, j'ai pu associer le code de la macro à un bouton sur la barre de commandes (grâce au tuto de Philippe Tulliez).
    C'est déjà bien.

    Après , j'ai aussi essayé d' utiliser ma macro depuis du code vba mais je n'ai pas réussi.
    Le nouveau message ici qui explique comment faire devrait résoudre le problème mais je verrai ça demain. :-)

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Bonjour,
    Sauf erreur de ma part, la boîte de dialogue Macros n'affiche pas les procédures présentes dans un fichier xlam
    Comme expliqué ci-dessus, c'est une macro que j'utilise régulièrement pour nettoyer des fichiers de données à importer.
    Je regarderai demain votre méthode pour utiliser la macro dans du code vba.

    Merci

  11. #11
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Pourquoi ne pas raisonner à l'inverse.

    Mettez la macro dans votre fichier "base de donnée".
    Ajouter un bouton qui déclenche une macro qui
    1. Vous demande l'emplacement du fichier à ajouter à la BdD
    2. Traite les données du nouveau fichier et les incorpore dans votre Base


    Il y a peut-être même des possibilité avec powerQuery mais je ne l'utilise jamais et donc ne maitrise pas du tout le sujet.
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. [Toutes versions] Macro ouverture fichier Excel + formatage
    Par asengs dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/02/2011, 11h44
  2. [XL-2007] Macro sur Fichier Excel partage
    Par ropineau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2009, 16h25
  3. [XL-2007] Macro et fichier excel protéger
    Par firecarl dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2009, 17h22
  4. [Excel & Macro] Attacher une macro à un fichier Excel
    Par Enthau dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/08/2008, 08h36
  5. attacher une macro à un fichier excel
    Par Baldric de Dol dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2008, 16h16

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