Comment exécuter ma macro Excel automatiquement ? - VB/VBA/VBS - Programmation
Marsh Posté le 26-12-2012 à 14:17:40
Bonjour ! J'en déduis que c'est une version supérieure à 2003 ...
Cela ne marche pas, oui mais quoi et où ? A suivre en mode pas à pas par exemple …
Vis à vis du code exposé, si la procédure est enregistrée dans un fichier indépendant en .xlam,
en ligne 67 est utilisé ThisWorkbook faisant référence au fichier contenant la procédure,
ne pouvant donc pas fonctionner sur un fichier planning externe ‼ Mieux vaut utiliser la propriété ActiveWorkbook …
Autre chose, si une procédure comporte des répétitions dans lesquelles ne change qu'un paramètre,
c'est préférable d'utiliser une boucle en y passant le paramètre afin d'alléger le code.
Eviter absolument les .Activate & .Select pouvant énormément ralentir le processus;
travailler directement sur les objets est bien plus concis et rapide !
Dernier point : lorsqu'il y a de nombreuses modifications dans un classeur,
désactiver la mise à jour de l'écran (ScreenUpdating) rend l'exécution plus véloce …
La procédure peut alors se "résumer" ainsi :
Code :
|
J'ai préféré Split au lieu d'Array pour renvoyer un tableau …
Pour continuer plus en avant, écrire un scénario en langage courant (& clair !) est nécessaire,
cela fait ensuite gagner du temps et évite l'usine à gaz !
Pour lancer automatiquement une macro à l'ouverture d'un classeur Excel, voir l'évènement Workbook_Open
devant être codé dans le module ThisWorkbook et non pas dans un quelconque module standard …
Pour afficher une boîte de dialogue afin de sélectionner un fichier, voir la méthode GetOpenFilename.
Ouvrir ensuite le fichier via la méthode Workbooks.Open …
Marsh Posté le 23-12-2012 à 13:22:50
Bonjour,
je ne sais pas si je poste au bon endroit même s'il me semble que oui. J'ai un planning pour le boulot au format .ics (apparemment, c'est iCalcreator qui le génère si j'en crois le site web qui me fournit mon planning) et avant de l'importer dans mon google calendar, j'ai besoin de le modifier pour avoir un résultat "propre" à l'affichage en supprimer certaines cellules (le début de ma macro avec les Do-Loop) et en supprimant certains morceaux de texte dans les cellules (la fin de ma macro avec "cells.replace" ).
N'y connaissant rien, j'ai donc bidouillé à l'aide de google une macro Excel que voici:
Donc, j'ouvre mon planning dans Excel, je crée une nouvelle macro, je copie/colle ce texte, je lance la macro. Hourra, ça fonctionne et fait exactement ce que je veux.
Maintenant, j'aimerais éliminer "je crée une nouvelle macro, je copie/colle ce texte, je lance la macro". Je voudrais un truc transparent pour l'utilisateur au final "en un clic" (ou deux). Donc je sauvegarde ma macro au format .xlam. Je lance le fichier et j'y mets mon planning puis je lance la macro mais ... marche pas !
Je ne sais pas si je suis bien clair, mais mes connaissances en dessous de zéro en macro, vba, excel et autres font que j'ai du mal à exprimer autrement ...
Si quelqu'un a pigé ce que je veux faire et peut m'aider, merci beaucoup !!
(ou alors un logiciel tout fait qui me modifie mes plannings au format iCal directement !)
Message édité par dwarfy le 23-12-2012 à 13:29:10