Dupliquer une macro

nicopat

XLDnaute Junior
Bonjour,

Je travaille sur la mise en place de formulaires de saisies dans excel. Je vais utiliser des boutons sur lesquels seront affectés des macros.

J'ai besoin de créer des macros qui seront très semblables les unes aux autres.
Par exemple, le contenu de mes macros sera du type :
1. select la case A1 du feuillet X
2. saisis la valeur "10%"
3. select la case A1 du feuillet Y

Et je dois créer une macro similaire pour d'autres valeurs : 20%, 30%, 40%, etc... à la place de "10%".

Au total, j'ai des centaines de macros à créer.
Donc au lieu d'enregistrer à chaque fois chaque macro "from scratch", je souhaite créer une macro type, et je souhaite ensuite copier ma macro type en modifiant la valeur au sein de la nouvelle macro.

Problème : je suppose que cela est possible, mais je ne sais pas le faire.

Merci de votre aide
 

ERIC S

XLDnaute Barbatruc
Re : Dupliquer une macro

Bonjour

on peut passer des infos, un exemple joint
il faudra sans doute que tu fasses suivre des infos sur la feuille qui appelle, le taux..
 

Pièces jointes

  • paramètres macro.xlsm
    21.8 KB · Affichages: 28

Dranreb

XLDnaute Barbatruc
Re : Dupliquer une macro

Bonjour.

Vous pouvez affecter la même macro à plusieurs boutons de formulaire.
Application.Caller vous y renverra le nom de Shape du bouton qui vous l'aura invoquée.
Il ne vous restera plus qu'à coder ce nom de façon à pouvoir en déduire le pourcentage à appliquer.
 

Dranreb

XLDnaute Barbatruc
Re : Dupliquer une macro

Non, car le convertisseur de .xlsm en .xls pour ma version d'Excel implante si mal les boutons de commande mis dans les feuilles que le projet VBA en devient presque inutilisable. Le demandeur parle de macros affectées à des boutons. Ce ne sont donc pas des boutons de commande, mais de formulaire. Eux seuls ont une propriété OnAction et modifient le Application.Caller
 

Pièces jointes

  • DiversNicopat.xls
    20 KB · Affichages: 22
Dernière édition:

nicopat

XLDnaute Junior
Re : Dupliquer une macro

je n'ai peut-être pas été assez claire dans ma question.

Je ne demande pas de conseil pour rédiger le contenu de la macro type ou pour enregistrer une macro.
Je demande comment il est possible de dupliquer une macro A (après l'avoir enregistrée) pour en faire une macro B, une macro C, une macro D, etc...
Ensuite je souhaite modifier le contenu des macros dupliquées pour remplacer "10%" par "20%" dans B, par "30%" dans C, par "40%" dans D, etc...

Ainsi, je pense pouvoir gagner du temps (au lieu de devoir réenregistrer à chaque fois l'intégralité des macros B, C, D en partant de zéro...).

Je ne pense pas que fournir un fichier exemple serve à quoi que ce soit, puisque le contenu de la macro A importe peu. C'est le process permettant la duplication qui est l'objet de ma question.

Merci d'avance
 

nicopat

XLDnaute Junior
Re : Dupliquer une macro

Bonjour.

Vous pouvez affecter la même macro à plusieurs boutons de formulaire.
Application.Caller vous y renverra le nom de Shape du bouton qui vous l'aura invoquée.
Il ne vous restera plus qu'à coder ce nom de façon à pouvoir en déduire le pourcentage à appliquer.

Danreb,
Je ne suis pas sure de bien comprendre.
Veux-tu dire qu'il est possible de créer une macro contenant une variable, et que cette variable sera remplacée par le texte contenu dans le bouton auquel cette macro sera affectée?

Donc dans mon exemple, il faudra que je crée un bouton contenant le texte "10%", un autre contenant le texte "20%", etc...

?

Si ceci est possible, je ne sais pas du tout comment faire cela.
 

nicopat

XLDnaute Junior
Re : Dupliquer une macro

Bon, j'ai compris comment on peut copier une macro :
Comment copier-coller macro pour Excel

Cela répond à mon besoin.

J'ai une autre question : dans ma macro, je souhaite ajouter une valeur à une colonne D contenant déjà N cellules avec des valeurs dans ces N cellules.
Ma nouvelle valeur doit donc être insérée dans cette colonne D, à la ligne N+1.
A chaque fois que j'utiliserai ma macro, N sera différent donc je ne peux pas utiliser :
Range("DN").Select

J'ai pensé utiliser :

Selection.End(xlDown).Select

pour accéder en bas de la liste, mais cela m'amène à la ligne N, et non à la ligne N+1.
Quelqu'un sait-il quel code VB utiliser pour arriver à mes fins?

Merci
 

ERIC S

XLDnaute Barbatruc
Re : Dupliquer une macro

Re

sans doute pas assez claire en effet .........

dans mon exemple tu as une macro unique appelée par plusieurs boutons, chacun pouvant donner ses propres informations spécifiques

ne sachant pas ce que fait ta macro (pas dans le détail, dans le principe) je ne vois pas comment aller plus loin

j'ai juste montré qu'on pouvait récupérer des infos, sinon tu peux jouer avec les copier/coller et avoir 100 macros...
 

Dranreb

XLDnaute Barbatruc
Re : Dupliquer une macro

J'ai fini par joindre un fichier au poste #5, non construit à partir de celui, que je ne pouvais exploiter, de ERIC S.
Vous y voyez cette macro, affectée à plusieurs boutons de formulaire :
VB:
Sub MacroCommune()
Dim Nom As String, Sh As Shape, Texte As String
Nom = Application.Caller
Set Sh = ActiveSheet.Shapes(Nom)
Texte = Sh.TextFrame.Characters.Text
MsgBox Nom & ": """ & Texte & """."
End Sub
 

Discussions similaires

Réponses
26
Affichages
383

Statistiques des forums

Discussions
312 243
Messages
2 086 541
Membres
103 244
dernier inscrit
lavitzdecreu