Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses
Avatar
Blaise
Bonjour =C3=A0 tous,

Voil=C3=A0 tr=C3=A8s tr=C3=A8s longtemps que je ne suis plus venu ici !

Voil=C3=A0 mon probl=C3=A8me :

J'ai une fonction Toto(a,b) que je voudrais pouvoir utiliser en VBA n'impor=
te quand sans devoir importer le module dans le quel est se trouve =C3=A0 c=
haque classeur que je cr=C3=A9e.
Je pensais qu'en la pla=C3=A7ant dans le classer/module personnel cela alla=
it fonctionner, mais non.

Merci d'avance,
Blaise

10 réponses

Avatar
DanielCo
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
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
Avatar
Blaise
Le dimanche 26 mars 2017 14:47:40 UTC+2, DanielCo a écrit :
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
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


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, fonct ionne.
Bien à toi
Avatar
Blaise
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, fonct ionne.
Bien à toi
Avatar
DanielCo
Regarde ici :
http://www.cjoint.com/c/GCApcO6rSuv
A moins que tu sois sur Mac ?
Poste le code quui ne fonctionne pas.
Daniel
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
Avatar
Blaise
Au temps pour moi, j'ai pourtant nettoyé mes verres de lunette ce mati n :)
Le classeur est bien chargé
Le code est tout simple :
Public Function NbreAlea(BorneInferieure As Single, BorneSuperieure As Sing le) As Single
'retourne un nombre aléatoire entre les bornes
NbreAlea = Int((BorneSuperieure - BorneInferieure + 1) * Rnd()) + Bor neInferieure
End Function
=====
Comme cela ne fonctionnait pas, j'ai ajouté moi-même le " Public "
Blaise
Le dimanche 26 mars 2017 17:05:44 UTC+2, DanielCo a écrit :
Regarde ici :
http://www.cjoint.com/c/GCApcO6rSuv
A moins que tu sois sur Mac ?
Poste le code quui ne fonctionne pas.
Daniel
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.(Bie n
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
Avatar
MichD
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:UsersTonProfilAppDataRoamingMicrosoftAddInsTonFichier.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 :
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
Avatar
DanielCo
Si tu as mis ta fonction dans personal.xlsb, pour l'utiliser, tu dois
utiliser la syntaxe :
=personal.xlsb!NbreAlea(...)
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
Le dimanche 26 mars 2017 17:05:44 UTC+2, DanielCo a écrit :
Regarde ici :
http://www.cjoint.com/c/GCApcO6rSuv
A moins que tu sois sur Mac ?
Poste le code quui ne fonctionne pas.
Daniel
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
Avatar
MichD
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
Avatar
Blaise
Merci Daniel,
J'avais oublié cet aspect.
Bien à toi,
Blaise
Le dimanche 26 mars 2017 18:58:36 UTC+2, DanielCo a écrit :
Si tu as mis ta fonction dans personal.xlsb, pour l'utiliser, tu dois
utiliser la syntaxe :
=personal.xlsb!NbreAlea(...)
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 " Pub lic "
Blaise
Le dimanche 26 mars 2017 17:05:44 UTC+2, DanielCo a écrit :
Regarde ici :
http://www.cjoint.com/c/GCApcO6rSuv
A moins que tu sois sur Mac ?
Poste le code quui ne fonctionne pas.
Daniel
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.(B ien
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 pa r un
raccourci clavier, fonctionne.
Bien à toi
Avatar
JièL
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
Le 26/03/2017 à 18:12, Blaise a écrit :
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
Le dimanche 26 mars 2017 17:05:44 UTC+2, DanielCo a écrit :
Regarde ici :
http://www.cjoint.com/c/GCApcO6rSuv
A moins que tu sois sur Mac ?
Poste le code quui ne fonctionne pas.
Daniel
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