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 unique pour plusieurs fichiers excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 42
    Points : 18
    Points
    18
    Par défaut Macro unique pour plusieurs fichiers excel
    Bonjour à toutes et à tous,
    J’utilise un fichier excel qui s’occupe d’extraire des données issues de bancs de test.
    Tous les différents bancs de test utilisent les mêmes macros. Je voudrais savoir s’il est possible de garder un seul fichier contenant les macros utiles et qu’ensuite les fichiers excels propres aux bancs de test viennent appeler cette unique macro. Le but est qu’en cas de modification du code, je n’aurai qu’à changer une seule fois le code.
    Ma question est donc plus précisément, est-il possible de faire ceci, si plusieurs extractions de données sont lancées en même temps cela ne risque t’il pas de faire planter la macro ?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Points : 194
    Points
    194
    Par défaut
    Bonjour,

    tu peux toujours enregistré ta macro dans ton classeur de macro personnelles. Comme ça elle sera accessible par tous fichiers excel des que tu en auras besoin. Il va de soit qu'il faut modifier le code pour qu'elle tourne avec n'importe quel fichier excel sur lequel tu vas la faire travailler. Mais ca marche et c possible. Apres si tu la lance simultanément, je sais pas si ça passe. Je vais faire des essais et je te dis ça.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Points : 194
    Points
    194
    Par défaut
    C'est bon ça marche. Ca passe si tu la lance plusieurs fois. A chaque fois c'est comme une "nouvelle" macro qui débute dans le classeur ou elle est appelée. Et si celui-ci est différent du précédent sur lequel tu as lancé la macro alors oui ça passe.

    Bonne journée !

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    qu'est ce que tu entends par "enregistré ta macro dans ton classeur de macro personnelles" ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Points : 194
    Points
    194
    Par défaut
    Sous excel, lorsque tu enregistre une macro tu peux choisir l'endroit ou tu veux l'enregistrer. Tu peux la sauvegarder sous ton classeur ou dans un dossier de macros personnelles. Il te suffit donc de le trouver dans ton HDD et d'enregistrer ta macro dans ce fichier. Alors elle sera tout le temps accessible. Fait un essai avec une macro enregistrée bidon à laquelle tu associe une commande du type Ctrl+B pour mieux comprendre...

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Merci lyonel de ton aide mais ta solution est valable que si tous les fichiers excel sont ouverts depuis mon PC, ce qui n'est pas le cas. Chaque fichier excel est ouvert un PC différent, du coup si j'enregistre ma macro dans mon classeur personnel, celle ci n'est utilisable que par moi ou je me trompe?

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    si tu veux que ta macro soit accessible depuis plusieurs PC sur un réseau je te conseil de transformer ta macro en macro complémentaire.
    tu peux faire cela en passant la valeur IsAddin à true dans les paramètres du classeur (ThisWorbook) dans VBA.
    enregistre ton classeur dans un répertoire accessible à tous les utilisateurs susceptibles d'utiliser ta macro, nomme le "Macros Complémentaires" par exemple.
    Chaque utilisateur devra alors ajouter ta macro par le menu "Outils > Macros complémenaitres ...", parcourir le réseau pour trouver le classeur qui contient ta macro. Note : Excel demande si la macro doit être copiée dans le répertoire personnel de l'utilisateur, personnellement je le déconseille, en cas de mise à jour de la macro, les utilisateurs l'ayant copiée ne bénéficieront pas de la dernière version, dommage.
    une fois fait, tous les utilisateurs auront accès à ta macro depuis n'importe quel classeur ouvert.

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour ta réponse, c'est nickel.
    Par contre j'ai juste une petite question pratique, si une personne veut bénéficier de la macro, elle a juste à préparer son fichier excel pour recevoir les infos et ensuite elle doit juste cocher dans macro complémentaire la macro qu'elle va utiliser. C'est tout?

    Si il y a une mise à jour de la macro, dans quelle macro dois je faire les modifications?

    Merci d'avance

  9. #9
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Utilisation :

    Ce que je fait dans mon cas, c'est fournir avec la macro une barre d'outil qui permet de déclancher la macro. il faut que ta barre d'outils soit attachée au classeur contenant la macro complémentaire.
    1/ crée ta barre d'outils
    2/ ajoute un bouton et affecte lui la macro à executer
    3/ attache la barre à ton classeur,pour cela va dans le menu "Affichage > Barre d'outils > personnaliser" sélectionne ta barre d'outils dans la liste, clic sur attacher, dans la fenêtre suivante, sélectionne ta barre personnalisée et clic sur copier.
    4/ enregistre ton classeur.
    cette barre d'outil sera automatiquement ajoutée à Excel lors de l'ajout de la macro complémentaire.

    Mise à jour de la macro :

    Pour ce qui est des mises à jour, le mieux est que tu développes ta macro dans un répertoire perso te permettant de la tester sans que les autres utilisateurs ne soient au courrant de tes modifs, lorsque ta macro fonctionne et que tu veux la diffuser il te faut :
    - demander à chaque utilisateur de désactiver la macro complémentaire (décocher la case dans le gestionnaire de macros complémentaires) et oui si le fichier est pointé par un utilisateur, il te sera impossible de le remplacer.
    - lorsque c'est fait tu copie ton original validé dans le répertoire de partage
    - chaque utilisateur réactive la macro complémentaire et le tour est joué.

    PS : lorsque la macro complémentaire est déclarée, elle est disponible jusqu'à ce que l'utilisateur la décoche dans le gestionnaire de macros complémentaires, la macro sera donc disponible à chaque ouvertue d'Excel.

    PS2 : petit truc sympa, ajoute un message confirmant l'installation de la macro complémentaire ainsi que sa version, tu peux le faire en placant ton code dans la procédure Workbook_AddinInstall() de l'objet ThisWorkbook (msgbox ou fenêtre perso).

  10. #10
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    je pense à autre chose :
    si ton document doit être préformaté (mise en page, cartcouche, etc ...) tu peux aussi envisager la création d'un modèle de document (*.xlt).
    en gros tu enregistre ton document Excel de référence (mise en page + macros) au format XLT (modèle), chaque utilisateur, lorsqu'il aura besoin de créer un document d'extraction des données du banc de mesure pourra ouvrir un nouveau document basé sur le modèle précédemment créé, lancer la macro par un bouton placé sur la feuille de saisie (par exemple) et enregistre son document après capture.

    Inconvénients :
    - cela allourdi un peu les fichiers générés (les macros sont enregistrées avec)
    - en cas de mise à jour, seuls les nouveaux documents pourront en bénéficier.

    A toi de voir...

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Ta dernière solution est parfaite et me convient.
    J'ai juste une dernière question, je ne vois pas comment les fichiers créés à partir de mon modèle pourront bénéficier des mises à jour de la macro.
    Dans quel fichier dois je faire les modifications pour qu'elles soient accessibles à tous?
    Si les fichiers sont dispersés un peu partout sur le réseau, vont-ils en bénéficier ou surtout peuvent ils en bénéficier?

    Merci beaucoup de ton aide

  12. #12
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Justement, ils n'en bénéficiront pas (des mises à jour), comme je te l'ai dit, la modification d'un modèle ne peut pas se répercuter sur les classeurs préalablement créés.

    Si tu persistes sur la voie du modèle, c'est dans celui-ci (le .xlt) que tu devra apporter les modifications à ta macro. Tes modifications sur le modèle seront disponibles pour tous les utilisateurs dès que tu auras enregistré le fichier.

    quelle que soit la localisation du fichier sur le réseau, la problématique reste la même : Choisir entre un modèle de document, plus simple à mettre à jour tout en sachant que les mises à jour ne peuvent être rétroactives, donc tes anciens fichiers n'en bénéficiront pas, et la macro complémentaire un peu plus lourde (au début) mais dont les mises à jour sont elles rétroactives puisque externes au fichier Excel contenant les données à traiter.

    Si j'ai bien compris ta problématique (corriges moi si je me trompe) tu veux :
    - créer un fichier Excel pour l'acquisition de données depuis un fichier généré par un banc de mesure.
    - automatiser la récupération des données
    - mettre à jour ces données dans le temps sur le même fichier Excel
    - pouvoir mettre à jour ta macro et faire en sorte que les mises à jour soient disponibles dans les fichiers Excel déja créés.

    Si c'est bien ce que tu veux faire, je ne vois que la solution de la macro complémentaire, certe un peu plus lourde à gérer au début, mais dans le temps on s'y retrouve. Perso j'ai commencé par la solution modèle de document et me suis vite confronté au même problème que toi à savoir comment mettre à jour les macros dans les classeurs déja créés, la solution macro complémentaire a résolu mes problèmes. Je ne saurais trop te conseiller d'insister sur cette voie.
    Même si ton fichier devant contenir les données a subit une mise en forme particulière, la solution macro complémentaire est adaptée, je l'ai personnellement mise en place pour l'intégration de données issues d'un SGDT (gestion de données techniques) dans un formulaire Excel. Le principe étant me semble-t-il similaire à ce que tu veux faire : récupérer des données dans un fichier texte ou autre (HTML dans mon cas) et les coller dans les bonnes cellules d'un tableau Excel.

    Excuses-moi, j'ai fait un peu long mais j'espère que cela pourra t'aider dans ta démarche.

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    je suis un peu têtu et j'ai décidé de continuer dans la voie d'un modèle car je me suis renseigné et il n'y a que quelques fichiers qui sont déjà existants et qui auront besoin d'une mise à jour.

    Par contre, j'ai essayé de modifier mon document "modèle" (.XLT) et quand j'essaie de sauvegarder mon modèle mis à jour, il est seulement possible de le sauvegarder au format xls ou alors quand j'essaie en XLT, il remplace le préexistant. Comment faire pour qu'il enregistre seulement la mise à jour et pas comme un nouveau modèle?

Discussions similaires

  1. [XL-2003] Erreur de macro en activant plusieurs fichiers EXCEL simultanement
    Par jabranejb dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/11/2012, 17h15
  2. Macro unique pour plusieurs fichiers texte
    Par kikim78 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/12/2009, 09h19
  3. [XL-2003] Créer une macro pour plusieurs fichiers excel
    Par bocki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 22h53
  4. Réponses: 10
    Dernier message: 28/08/2008, 09h15
  5. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/2006, 16h20

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