Comment gérer plusieurs utilisations simultanée d'une macro ?

Bonjour,

Je suis stagiaire dans une boite et j'ai eu a développer une macro pour effectuer une tache laborieuse qu'ils faisaient à la main jusqu'à maintenant. Je ne connaissais pas le langage VBA mais avec des bases de programmation j'ai pu développer quelque chose de fonctionnel que j'ai enregistré dans un xlsm que j'ai mis dans un lecteur partagé.

J'ai ensuite installé un bouton dans le ruban de chaque ordinateur qui le souhaitait, relié à cette macro.

Le problème est que du coup seul un utilisateur à la fois peut la faire tourner.

J'ai cru comprendre qu'il y avait plusieurs façons d'enregistrer une macro, alors si quelqu'un à une solution pour que plusieurs personnes puissent utiliser ma macro simultanément ça m'aiderait bien.

Merci d'avance

ps : Ah et tant qu'a faire si quelqu'un sait comment faire en sorte de pouvoir quand même travailler sur un autre Excel quand la macro tourne je suis preneur

Bonjour

Si je comprends bien la macro tourne sur un fichier choisi par l'utilisateur et donc chacun traite un fichier différent.

Il faut créer un complément xlam que chacun installe sur son PC.

Sauf à lancer une autre session Excel, la macro ne pouvant tourner en arrière plan, il faut attendre

Bonjour ptrs32,

Je ne suis pas expert mais je ne pense pas que ce soit possible. Je pense que la meilleure solution serait d'avoir sur le lecteur partagé, un fichier A qui le fichier récepteur des données. Ensuite, chaque utilisateur aurait sur son ordinateur le fichier B permettant d'effectuer la tâche complexe. Il suffit de rajouter quelques lignes à la macro lui indiquant d'inscrire le résultat dans le fichier A. Il est possible d'écrire dans des fichiers fermés !

ps : Ah et tant qu'a faire si quelqu'un sait comment faire en sorte de pouvoir quand même travailler sur un autre Excel quand la macro tourne je suis preneur

Quand ta macro tourne, qu'est-ce qui t'en empêche ? Combien de temps met cette macro ? Je pense que si tu me dis ça c'est qu'elle met un peu de temps à tourner. Envoie ton fichier anonymisé pour que l'on puisse mieux t'aider

EDIT: Salut Chris ! Ah, j'ai peut-être mal compris le sujet..

Il faut créer un complément xlam que chacun installe sur son PC.

D'accord merci pour cette solution, j'ai testé et ça fonctionnera bien. Bon l'inconvénient c'est que je ne pourrais pas y faire de modifications en direct pour tous comme avec le xlsm commun, il faudra que je renvoi le nouveau xlam et que chacun fasse la procédure pour la rendre disponible sur leur ruban.

Je pense que la meilleure solution serait d'avoir sur le lecteur partagé, un fichier A qui le fichier récepteur des données. Ensuite, chaque utilisateur aurait sur son ordinateur le fichier B permettant d'effectuer la tâche complexe. Il suffit de rajouter quelques lignes à la macro lui indiquant d'inscrire le résultat dans le fichier A. Il est possible d'écrire dans des fichiers fermés !

Alors désolé je n'ai pas compris ce que tu entends par là pour être plus clair c'est une macro qui s'applique sur un fichier excel exporté d'un site. Le code en lui même est dans un tableur xlsm sur un dossier partagé mais je ne l'ouvre jamais, chacun fais juste appel au code via un bouton sur le ruban, qui vient le cherche là où il est, et le programme s'effectue sur le tableur actif.

Quand ta macro tourne, qu'est-ce qui t'en empêche ? Combien de temps met cette macro ? Je pense que si tu me dis ça c'est qu'elle met un peu de temps à tourner.

Le temps de traitement dépend du fichier de base, mais ça peut dépasser les 20 minutes parfois et tant qu'une macro tourne on ne peut plus travailler avec excel, c'est à dire que "ça rame grave".

Désolé je ne peux pas vous envoyer le code car il contient beaucoup de données sensibles et l'algo est propriété de l'endroit ou je travaille. Mais ce n'est vraiment pas un problème de code, celui ci fonctionne très bien, je cherche simplement à le partager différemment aux autres employés via la lecteur partagé.

Merci beaucoup pour vos réponses en tout cas,

Même si j'ai une première solution je vais laisser le post en non-résolu si jamais quelqu'un à une autre idée.

Je ne doute pas que ta macro marche ! Mais on pourrait je pense réduire son temps d'exécution...

Si on a que des données factices, pouvons-nous vraiment "voler" ce code sans comprendre à quoi il sert ? Mais je sais que des entreprises sont très rigides, donc comme tu le souhaites, je comprend très bien.
Combien de ligne fait la macro ?

Pour réduire le temps d'exé, as-tu bien respecté :

  • Ne pas utiliser de copié/collé (.Copy // .Paste)
  • Ne pas utiliser de .Select
  • Ne pas faire de boucle For... Next Sur des plages de cellules mais sur des arrays
  • Utilisation en début de macro de :
    'On désactive les messages d'alertes d'excel et on désactive le défilement des macros
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
  • Et en fin de macro :
    'On active les messages d'alertes d'excel
    Application.DisplayAlerts = True
  • Déclaration de toute les variables avec utilisation de ce code :
    Option Explicit
Rechercher des sujets similaires à "comment gerer utilisations simultanee macro"