Appeler une fonction complémentaire dans une macro

Bonjour,

J’aimerais pouvoir utiliser une fonction dans tous mes classeurs. J’ai vu sur internet qu’il fallait enregistrer ma fonction comme macro supplémentaire puis la déclarer dans les options, onglet Complément. Ce que j’ai fait…

Je peux rappeler la fonction dans une formule, mais pas dans une macro (voir screenshots ci-dessous)… Comment faire ?

image image

Pour info voici le code de la fonction en question

Function RndInteger(ByVal Mini As Long, ByVal Maxi As Long) As Long
RndInteger = Int((Maxi - Mini + 1) * Rnd + Mini)
End Function

Merci de votre aide

Bonjour,
Plutôt qu’un long discours, une vidéo YouTube

Merci Mimimathy, mais ce n’est pas le propos…
Mon problème est que pour pouvoir utiliser ma fonction RndInteger dans une macro, je suis obligé de recopier dans chaque module où je souhaite l’utiliser le code de la fonction sinon j’ai le message d’erreur suivant et ma macro ne fait rien :unamused:
image

Re,
Tu colles ta macro dans un classeur vide (dans un module Standard (Module1))

A partir du menu VBA tu fais Enregistrer
Tu vas avoir la boite de dialogue Enregistrer sous qui va s’ouvrir…
Tout en bas de cette boite de dialogue tu as un champ « Type » :
Choisir (vers le bas de la liste) « macro complémentaire Excel (*.xlam) »
…puis dans le champ au dessus « Nom du fichier » tu remplaces ce qui est proposé par Perso.xlam
Puis valider pour enregistrer.
Fermer Excel
Rouvrir Excel
Dans l’onglet Développeur cliquer sur Complément
Cocher Perso et valider
La macro est désormais disponible pour tous les classeurs : Tu peux la supprimer du classeur ou tu as fait l’enregistrement.

Elle n’est visible nulle part dans Excel mais comme tu connais son nom tu peux l’invoquer dans une autre macro…" Call MaMAcroAMoi "

Tu peux également l’exécuter à partir du bouton Macro (dans l’onglet Développeur) il suffit de taper son nom…

Tu peux aussi l’affecter à un bouton personnalisé dans ton ruban ou dans la barre d’outils complémentaire (dans ce cas elle est visible dans le menu de personnalisation)

Nota :
Si toutefois tu dois modifier la macro plus tard ou en rajouter une autre que tu veux mettre dans ton perso.xlam
Il suffit d’aller dans ton VBA Project : Là tu vois ton perso.xlam.
En cliquant dessus en dépliant le Module1, tu vois ta macro, tu peux aussi la modifier ou en rajouter.
Dans ce cas, rappelle toi bien :
Si tu décides de modifier ton perso.xlam tu dois absolument sauvegarder ton perso.xlam DANS VBA pendant qu’il est actif.
Sinon tes modifications seront perdues : Si tu passes sur un autre projet et que tu quittes Excel en oubliant de revenir sur ton perso.xlam, aucun message ne te demandera si tu désires sauvegarder les modifications

Re, merci de t’occuper de mon cas. Je dois faire ton désespoir…

J’avais déjà suivi ce cheminement. Plusieurs choses m’échappent :

  • mon fichier .xlam est sauvegardé dans un dossier introuvable sur mon PC
  • même si je vois bien mon VBAProject dans le volet de gauche, il m’est impossible d’invoquer RndInteger dans une autre macro… pas en l’état en tout cas. J’ai trouvé une parade en copiant la fonction au début du module mais ce n’est pas terrible :confused:
  • J’ai essayé d’ajouter une macro à perso.xlam, au moment de sauvegarder j’ai un message d’erreur style « Impossible de sauvegarder, fichier en lecture seule »

Autre chose, mon perso.xlam est bien sauvegardé en local sur mon PC ? Qu’est-ce qui se passe si j’envoie un classeur qui emploie cette fonction par mail à un collègue ?

Re
Ton dossier XLAM se trouve dans

C:\Users\***nom d'utilisateur***\AppData\Roaming\Microsoft\AddIns

Nom d’utilisateur étant ton nom dans le PC sans les étoiles

Qu’est-ce qui se passe si j’envoie un classeur qui emploie cette fonction par mail à un collègue ?
La macro fonction doit être dans ton fichier que tu transmets (dans un module)
en XLAM, c’est pour ton usage perso, un peu logique non ???

Ok merci

Prends soin de toi