Fonctions avec paramètres pour MACRO

F

Florent

Guest
Bonjour à tous,

J'avais une question je pense assez simple pour les habitués de ce forum !
Je voudrais créer une fonction avec un paramètre qui aurait pour role de m'afficher une des feuille de mon classeur. J'ai fait ca :

Function ChangerFeuille(Feuille) As String
Sheets(Feuille).Select
End Function

Mais ensuite, je veux assigner cette fonction a un bouton par exemple qui fait parti d'un menu ! Et la, surprise, ma fonction n'apparait pas dans la liste des macros que je peux affecter à mon bouton...

Auriez-vous une idée de la solution ?

Merci et bonne journée à tous
 

Jacques87

XLDnaute Accro
Bonsoir Florent

Si j'ai bien compris tu veux créer un bouton qui te permettra d'accéder à une feuille de ton classeur
Et en plus tu voudrais que ce bouton soit dans le Menu
Voila ce que je propose

PS: j'ai oublié de changer le nom du bouton, il s'appelle 'Elément de menu personalisé'

Bon courage
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Florent et Jacques87 :)

Florent, je ne vois pas trop l'intérêt de ce que tu souhaites faire mais ce que je peux te dire, c'est qu'il est normal que ta fonction n'apparaisse pas dans la liste des macros car c'est une fonction (pas une macro). Tu pourras par contre la retrouver dans la liste des fontions personnalisées...

Pour pouvoir l'appeler avec un bouton, il faut la déclarer en Sub, c-à-d procédure (ou macro) mais tu perds alors la possibilité de choisir ta feuille par un paramètre : il faut demander le choix à l'utilisateur et tu comprendras aisément que les sélections directes par click sur l'onglet ont un avantage à ce niveau...

A+
 
F

Florent

Guest
Jacques87 écrit:
Bonsoir Florent

Si j'ai bien compris tu veux créer un bouton qui te permettra d'accéder à une feuille de ton classeur
Et en plus tu voudrais que ce bouton soit dans le Menu
Voila ce que je propose

PS: j'ai oublié de changer le nom du bouton, il s'appelle 'Elément de menu personalisé'

Bon courage

Bonjour, y'avait-il un fichier joint à trouver ??

Merci pour vos réponses, et pour répondre à Charly, en fait je dois faire un programme de gestion de compte bancaire depuis Excel, et mon '''logiciel''' comporte différentes sections et menus. Et j'aimerais éviter d'avoir à faire une fonction par Feuille avec :
Sub goToGestion()
Sheets('Gestion').Select
End Sub

Mais je préfererais faire une seule fonction et lui passer en paramètre le nom de la feuille à ouvrir, mais apparament ce n'est pas possible d'après ce que tu me dis...

Merci encore pour vos réponses si rapides, et bon week end !
 

Jacques87

XLDnaute Accro
Florent, je te présente toutes mes excuses, je ne m'étais pas rendu compte que j'avais oublié le fichier
Voila qui est réparé
Je reste à ta disposition pour toutes questions supplémentaires relatives à ce post (ou tout autre question également)

Cordialement [file name=essai_20060107160837.zip size=8923]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essai_20060107160837.zip[/file]
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Florent, Jacques87, Charly2,

Florent, comme Charly2 essaie de te le dire, tu cherches à utiliser à tort une 'Function' au lieu d'une simple procédure 'Sub'. Les Functions sont destinées avant tout à renvoyer des valeurs et n'ont pas pour objet d'effectuer des traitements tel que des sélections de feuille, des modifications de cellules, etc... Même s'il est possible de manipuler des objets à l'intérieur d'une fonction, les procédures Sub sont plus adaptées pour ce rôle.

Par contre, tu peux très bien passer un argument à une procédure Sub comme tu le fais avec une fonction.

Sub MaMacro(Argument)
...
End Sub

Tu trouveras ci-joint un exemple simple utilisant la procédure suivante :
Sub goToFeuille(F As String)
      Sheets(F).Activate
End Sub
Par ailleurs, il est normal que cette procédure Sub n'apparaisse pas dans la boite de dialogue Exécuter ou Affecter une macro. C'est le cas de toutes les procédures avec argument(s). Cela dit, même si elle n'apparait pas, tu peux très bien faire appel à cette sub en tapant dans la zone d'édition de cette boite de dialogue et en respectant la syntaxe suivante : 'MaMacro MonArgument' (c'est à dire le nom de la macro + un espace + le nom de l'argument attendu, et le tout compris entre 2 apostrophes). A noter que si l'argument attendu est de type String, ce dernier devra être compris entre 2 guillemets.

Cordialement, [file name=PourFlorent_20060107195446.zip size=6978]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourFlorent_20060107195446.zip[/file]
 

Pièces jointes

  • PourFlorent_20060107195446.zip
    6.8 KB · Affichages: 18

Discussions similaires

  • Question
Microsoft 365 Excel365
Réponses
2
Affichages
209

Statistiques des forums

Discussions
312 328
Messages
2 087 318
Membres
103 515
dernier inscrit
Cherbil12345