Simplifeir un code VBA

Résolu/Fermé
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 26 juil. 2011 à 15:50
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 28 juil. 2011 à 07:36
Bonjour à tous,

Je travaille sous Windows XP-SP3 et Excel 2002.
Dans un classeur d'une douzaine de feuilles j'ai dans la partie VBA 11 Modules et 5 Worcksheet. Dans mes différentes procédures VBA j'ai des tâches répétitives que j'ai réécrites à chaque fois. Cela fonctionne parfaitement mais ça allonge et alourdi le code.
Je souhaiterais simplifier tout cela en écrivant qu'une seule fois chacune de ces parties et en l'appelant chaque fois que nécessaire. Cela faciliterait la maintenance du classeur et l'allègerait.
Ma question est : Quelle est la façon la plus fiable et la plus rapide ?
Je peux créer des macros et les appeler quand j'en ai besoin.
Où je peux utiliser les "FUNCTION" en les regroupant dans un même module.
Je pense que les deux doivent fonctionner mais quelle est la meilleure méthode car compte tenu de l'importance de cette modif je ne tiens pas à recommencer ?

Merci d'avance pour votre aide.
Cordialement.
Mistral
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
26 juil. 2011 à 18:14
Bonjour,

tout dépend!....
une fonction te retourne qu'une seule valeur; l'avantage est que tu te constitue une bibliothèque que tu pourras utiliser dans d'autres projets
tu as intérêt à faire une maquette pour tester ta fonction...

une macro paramétrée peut renvoyer plusieurs valeurs, faire des successions d'action ; tu peux aussi y insérer des fonctions et aussi te constituer une bibliothèque

je regarde dans mon grenier pour te montrer un exemple...

a+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
26 juil. 2011 à 18:30
donc ci joint un exemple
https://www.cjoint.com/?3GAsvXfxsfs

classements d'observations d'oiseaux pour forum CCM mais peu importe

la macro principale est "classer_photo" qui appelle 2 macro paramétrées contenant un appel de fonction (fonction que j'utilise dans d'autres appli). d'autre part la mémoire est libérée une fois la fonction terminée

note bien la syntaxe d'appel d'une sub: pas de parenthèses et d'une fonction; parenthèses

mais c'est normalement à faire quand tu cogites ta macro... c'est assez casse-gueu;l;e de le faire une fois la macro terminée

nota: nbre de lignes maxi d'une procédure chez MS: 50....
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
26 juil. 2011 à 18:32
Merci Michel de t'interesser à mon problème...
Fait quand même attention de ne pas tomber de l'échelle et méfie toi des souris...

Ceci dit je ne suis pas une flèche en VBA et j'utilise beaucoup l'enregistreur de macro qui ne donne pas toujours la solution la plus simple.
Ce que je cherche avant tout c'est assurer la maintenance du classeur et si je peux par la même occasion diminuer un peu son poids se serait parfait.

Cordialement
Mistral
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
26 juil. 2011 à 19:08
Ceci dit je ne suis pas une flèche en VBA

c'est l'occasion de t'y mettre! :o)

un tuto très sympa
http://www.info-3000.com/
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
28 juil. 2011 à 07:36
Bonjour Michel,

Désolé de répondre si tard mais hier je n'ai pas réussit à me connecter à CCM. Merci pour toutes ces infos, j'ai regardé ton derniers lien et il y a beaucoup de chose très interréssantes. Il est rangé dans mes favoris...

Si j'ai d'autres questions je reviendrais mais en attendant je passe ma question en résolu.


Merci à toi et bonne journée.
Mistral
0