Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro à paramètre

benoa

XLDnaute Junior
Bonjour à tous,

J'ai créé une macro à paramètre du type : Public Sub MaSubroutine(chaine As String)

Cependant, elle n’apparaît pas dans mes macro après enregistrement. Lorsque j'enlève le paramètre elle réapparaît dans mes macros : : Public Sub MaSubroutine(). Comment palier à ce problème? Dois-je obligatoirement créer une fonction dans ce cas?

Merci à tous pour vos suggestions.
 

sousou

XLDnaute Barbatruc
Re : Macro à paramètre

Bonjour.
Il est normal que cette macro n'apparaissent pas dans les macros accessible.
En effet tu ne peux lancer directement une macro qui contient des arguments, seule une autre procédure peux appeler cette macro en lui transmettant les arguments 'call masubroutine("toto")'
Tu peux la transformé en fonction, mais ce n'est pas du tout le même chose.
Une fonction pourra être appeler de cette manière:
dans une procédure: monrésultat=masubroutine("toto")
Dans une feuille, dans une cellule :=masubroutine("toto")
Que veux tu vraiment faire?


Bonjour à pierrot
 

chris

XLDnaute Barbatruc
Re : Macro à paramètre

Bonjour

Comme sousou, je trouve que ta question est ambiguë.

Si tu crées une procédure à laquelle tu passes des paramètres c'est en général qu'elle a une utilité et elle doit être appelée par une autre procédure qui lui passe le ou les paramètres.

SI tu nous disait plutôt le fin mot de l'histoire, à savoir la finalité du code...
 

benoa

XLDnaute Junior
Re : Macro à paramètre

En fait je dois passer en paramètre deux chaînes de caractères, retourner la cellule où se trouve ces deux chaines, puis permuter ces deux cellules. Sauf qu'après permutation, j'aimerais que cela s'arrête sans renvoyer de valeur.
 

benoa

XLDnaute Junior
Re : Macro à paramètre

Quand je crée ma subroutine et que je passe mes chaînes de caractères en variable et non en paramètre, ça fonctionne. Maintenant, je voudrais pouvoir effectuer le même travail avec des chaîne de caractères différentes... par passage en paramètre.
 

Staple1600

XLDnaute Barbatruc
Re : Macro à paramètre

Bonjour à tous

benoa
F1 est toujours un précieux allié
EXTRAIT AIDE VBA
 
Dernière édition:

benoa

XLDnaute Junior
Re : Macro à paramètre

Désolé mais je ne trouve pas ce que je cherche ici. Je souhaite passer un élément en paramètre, apparemment, on ne peut le faire qu'à l'aide de fonctions. Je souhaite ensuite réaliser un traitement, du style copier une cellule dans une autre puis m’arrêter sans renvoyé de valeurs, ce qui correspond plus à une subroutine. Je ne sais pas quoi utiliser pour résoudre mon problème.
J'aurais envie d'essayer :

Public Function MaFonction (Parametre As String) As Nothing
MaFonction = call MaSubroutine(Parametre)​
End Function

mais cela ne peut pas fonctionner.
 

Jam

XLDnaute Accro
Re : Macro à paramètre

Salut à tous (que du beau monde ici )

Benoa, une petite suggestion:
Tu pourrais sélectionner les 2 cellules à permuter ET lancer la macro ensuite.
Il suffit que celle-ci récupère les 2 sélections et effectue la permutation et/ou autres opération au passage. Et..c'est tout non ?

Bon courage
 

benoa

XLDnaute Junior
Re : Macro à paramètre

Oui parfait mais tu dit : "il suffit que celle-ci récupère les deux sélections et..." comment peut on "récupérer" cette sélection? Si je comprend bien, je sélectionne les deux cellules puis => outils => macro => MaSubroutine
 

sousou

XLDnaute Barbatruc
Re : Macro à paramètre

Re
Pourquoi ne pas nous joindre un exemple précis de ce que tu veux.
Deux questions?

1/ définir les actions à effectuer dans la procédure
2/ quelle action doit lancer cette procédure ou fonction ou.....
 

Jam

XLDnaute Accro
Re : Macro à paramètre

Re,
comment peut on "récupérer" cette sélection?
Il suffit d'utiliser:
Code:
selection
Ensuite tu fais ta permutation en récupérant les valeurs/formules (?) à permuter

Si je comprends bien, je sélectionne les deux cellules puis => outils => macro => MaSubroutine
Oui c'est bien cela

Et si tu as besoin d'un paramètre à passer, il te suffit de mettre un petit Application.Inputbox dans ton code qui te permettra de demander le paramètre pendant l'exécution de la routine.

Bon courage

PS: L'aide en ligne de VBA 2010 concernant Selection

 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…