Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Comment créer une macro (fonction) complémentaire en Excel 2016

59 views
Skip to first unread message

Blaise

unread,
Mar 26, 2017, 8:20:45 AM3/26/17
to
Bonjour à tous,

Voilà très très longtemps que je ne suis plus venu ici !

Voilà mon problème :

J'ai une fonction Toto(a,b) que je voudrais pouvoir utiliser en VBA n'importe quand sans devoir importer le module dans le quel est se trouve à chaque classeur que je crée.
Je pensais qu'en la plaçant dans le classer/module personnel cela allait fonctionner, mais non.

Merci d'avance,
Blaise

DanielCo

unread,
Mar 26, 2017, 8:47:40 AM3/26/17
to
Bonjour,
Normalement, ça fonctionne. Vérifie que ton classeur de macros
personnelles est bien ouvert :
Clique sur l'onglet Affichage, bouton Afficher. Le nom de ce classeur
doit apparaître.
Cordialement.
Daniel

Blaise

unread,
Mar 26, 2017, 9:38:40 AM3/26/17
to
Merci de ta réponse Daniel, mais je comprend pas.
Il n'y a pas de bouton Afficher dans l'onglet Affichage.

Je vois très bien dans l'IDE PERSONNAL.XSLB et dedans mes deux modules, un pour les procédures et l'autre pour les fonctions.(Bien qu'il n'y ait pour le moment d'une seule procédure et la seule fonction que je teste)
D'ailleurs, la procédure, appelée par un raccourci clavier, fonctionne.

Bien à toi
Message has been deleted

DanielCo

unread,
Mar 26, 2017, 11:05:44 AM3/26/17
to
Regarde ici :
http://www.cjoint.com/c/GCApcO6rSuv
A moins que tu sois sur Mac ?
Poste le code quui ne fonctionne pas.
Daniel

Blaise

unread,
Mar 26, 2017, 12:12:41 PM3/26/17
to
Au temps pour moi, j'ai pourtant nettoyé mes verres de lunette ce matin :)

Le classeur est bien chargé

Le code est tout simple :

Public Function NbreAlea(BorneInferieure As Single, BorneSuperieure As Single) As Single
'retourne un nombre aléatoire entre les bornes
NbreAlea = Int((BorneSuperieure - BorneInferieure + 1) * Rnd()) + BorneInferieure
End Function

=====
Comme cela ne fonctionnait pas, j'ai ajouté moi-même le " Public "

Blaise

MichD

unread,
Mar 26, 2017, 12:48:40 PM3/26/17
to


Bonjour,

Suppose que tu as une macro dans un "MODULE STANDARD" dans un fichier que tu as enregistré
comme un fichier complémentaire (.xlam). Le fichier devrait s'enregistrer habituellement dans
ce répertoire :
C:\Users\TonProfil\AppData\Roaming\Microsoft\AddIns\TonFichier.xlam

Pour que cette fonction soit effective dans les feuilles des autres classeurs que tu ouvres :
À partir du menu Fichier d'Excel / Options / Compléments /
Dans le bas de la page choisit dans la liste déroulante : "Compléments Excel"
et dans la fenêtre ouvrante, tu dois cocher le nom du fichier utilisé comme "macro
complémentaire".

La fonction de la macro complémentaire sera fonctionnelle dans tous les classeurs Excel, aussi
longtemps que tu ne décocheras pas cette option.


MichD



"Blaise" a écrit dans le message de groupe de discussion :
15efb7a3-0055-453a...@googlegroups.com...

DanielCo

unread,
Mar 26, 2017, 12:58:36 PM3/26/17
to
Si tu as mis ta fonction dans personal.xlsb, pour l'utiliser, tu dois
utiliser la syntaxe :
=personal.xlsb!NbreAlea(...)

MichD

unread,
Mar 26, 2017, 1:25:21 PM3/26/17
to

Pour complèter l'information sur ce sujet :

Si tu veux utiliser (appeler) une fonction ou une procédure du fichier de macros
complémentaires directement dans une procédure VBA d'un autre fichier VBA,

A ) Lorsque tu crées ton classeur de macros complémentaires, dans la fenêtre VBA, fais un
clic droit sur le projetVBA du classeur de macros complémentaires et choisis la commande
"propriété "propriétés de " et donne un nom unique à ce projet et sauvegarde (enregistre le
fichier).

B ) Pour appeler en VBA les fonctions ou procédures directement dans un autre classeur en VBA,
Dans ledit classeur où tu veux appeler la fonction ou la procédure, Barre des menus / outils /
références /

Si tu as déjà coché l'option dans le message précédent, regarde dans la liste, et tu devrais
apercevoir le nom du projetVBA que tu lui as donné . Coche-le. Si "l'option" n'est pas cochée,
tu dois utiliser le bouton parcourir de la fenêtre et dans la fenêtre de Windows explore,
retrouver l'endroit où tu as placé ton fichier de macros complémentaires. ATTENTION : dans la
fenêtre où tu recherches le fichier n'oublie pas de modifier dans le bas de la fenêtre, le
type de fichier pour "Microsoft Excel files (-.xlsm, .xlam....). Double-clique sur le fichier
en t'assurant qu'il est bien coché dans la fenêtre "ajouter une référence" avant de la fermer.

Si tu n'as pas exécuter A (Nom particulier), tu vas pouvoir constater que tu as 2 fois le même
projetVBA dans la liste et cela mélange Excel... et tu ne pourras pas appeler les fonctions ou
procédures simplement pas leur nom.

Tu pourras appeler la fonction ou procédure directement pas son nom simplement.

Dans mon message précédent, après avoir coché l'option, tu peux appeler la fonction par son nom
seulement.

MichD


Blaise

unread,
Mar 27, 2017, 3:30:37 AM3/27/17
to
Merci Daniel,

J'avais oublié cet aspect.

Bien à toi,
Blaise

Blaise

unread,
Mar 27, 2017, 3:32:49 AM3/27/17
to
Merci MichD

Tes explications sont très claires.
Je vais essayer cela et je reviendrais vers toi si j'ai un problème

Bonne journée,
Blaise

JièL

unread,
Mar 27, 2017, 4:39:27 AM3/27/17
to
Hello,

pour info : depuis 2010 au moins il existe la fonction
ALEA.ENTRE.BORNES(mini;maxi)
c'est peut-être pas la peine de la récréer ;-)

--
JièL Alea jacta est
0 new messages