Excel : attacher une fonction VB à une feuille

  • Créateur du sujet Créateur du sujet yr_75
  • Date de début Date de début

yr_75

Membre actif
23 Juin 2002
522
3
Paris
www.madmagz.com
Bonjour,

J'ai trouvé sur le Web une fonction en Visual Basic et je voudrais l'attacher à une feuille Excel existante. Je pourrais alors la déclencher à volonté sur les cellules de la feuille. Comment faire ? Merci d'avance :)
 
Je ne suis pas certain d'avoir complètement compris ta demande (corrige-moi si je me trompe) mais pour utiliser une fonction dans une feuille Excel, il faut :
  1. ouvrir Visual Basic Editor
  2. insérer un module
  3. y coller ta fonction trouvée sur internet entre les instruction Function et End Function (ça doit être Fonction et Fin Fonction si ta version d'Excel utilise le visual basic en français :mouais: )
  4. tu retrouves alors ta fonction dans la catégorie Fonctions personnalisées de Insérer une fonction
voilà, j'espère avoir répondu à ta demande :heu: :cool:
 
Partant du principe qu'un bon exemple :siffle: vaut mieux qu'une longue explication, tu trouveras ci-dessous la description d'une fonction toute simple permettant d'affecter le jour de la semaine à une date donnée.

A noter que JOURSEM() est la fonction d'Excel qui renvoie pour une date donnée en argument le jour de la semaine sous forme de chiffre (de 1 pour le dimanche à 7 pour le samedi) ; la fonction DAY proposée ici n'a donc plus qu'à convertir le chiffre donné par JOURSEM en son équivallent en français.

Dans le module de VB Editor :
Function Day(JourSemaine)
If JourSemaine = 1 Then Day = "Dimanche"
If JourSemaine = 2 Then Day = "Lundi"
If JourSemaine = 3 Then Day = "Mardi"
If JourSemaine = 4 Then Day = "Mercredi"
If JourSemaine = 5 Then Day = "Jeudi"
If JourSemaine = 6 Then Day = "Vendredi"
If JourSemaine = 7 Then Day = "Samedi"

End Function

Utilisation dans la feuille Excel :
B1=Day(JOURSEM(A1))

J'espère que celà t'aidera :cool:
 
Bonjour,
Si je puis me permettre d'ajouter ceci à l'excellent démonstration de pifou:
Je te conseille d'inclure la ligne

Application.Volatile

Pour que le calcul de ta fonction soit inclue dans le recalcul automatique.
Bon courage
 
geoffrey a dit:
Oki (je demandais ca parce que j'avais rencontré des problèmes pour utiliser une feuille excel avec des macro faite sur Windows sur mon mac)

VBA est identique, mais comporte quelques instructions et syntaxes propres à l'une ou l'autre plate forme. A commencer par les chemins d'accès aux fichiers, par exemple. Toute macro qui comporte l'une ou l'autre de ces spécificités provoquera des erreurs sur l'autre plate forme.

Pour Pifou, je crois : la dernière (et la seule) version d'excel à avoir implémenté visual basic en français est Excel 5, ce qui ne nous rajeunit pas :D
 
Pascal 77 a dit:
Pour Pifou, je crois : la dernière (et la seule) version d'excel à avoir implémenté visual basic en français est Excel 5, ce qui ne nous rajeunit pas :D

J'ai eu tellement de galères pour convertir des macros sous Excel 5 vers Excel 6 (le convertisseur automatique avait ses limites :( ) que j'ai été marqué à vie par cette version française de Visual Basic :D :D
 
Désolé, je suis nul en VB, je n'y connais rien. La fonction se trouve ici (vers le bas de la page).
Je la recopie et je la colle telle quelle dans le module de VB editor. J'enregistre et je reviens sur le fichier excel. Là, dans une cellule, je tape la formule : =EAN13(A1). Mais Excel me signale une erreur "#NOM?" :confused: :( Qui peut m'aider ?
 
yr_75 a dit:
Désolé, je suis nul en VB, je n'y connais rien. La fonction se trouve ici (vers le bas de la page).
Je la recopie et je la colle telle quelle dans le module de VB editor. J'enregistre et je reviens sur le fichier excel. Là, dans une cellule, je tape la formule : =EAN13(A1). Mais Excel me signale une erreur "#NOM?" :confused: :( Qui peut m'aider ?

A mon avis:

Si tu as recopié la fonction telle quel, il manque le $ après EAN13. Tu dois taper

=EAN13$(A1)
 
Pascal 77 a dit:
Patientes un moment, je vais tester et je reviens.

Bon, veni, vidi, vici encore un coup par Jupiter.

Alors voilà : le texte sur le site internet ne donne pas un programme VBA exécutable, en raison de la présence inopportune d'un certain nombre de caractères invisibles. Je l'ai débugguée, si tu me passes une adresse email par MP, je te l'envoies. Pour pouvoir l'utiliser, tu peux, soit la laisser comme module dans un classeur, soit l'intégrer à ton classeur de macros personnelles, ce qui présente l'avantage de la rendre disponible pour n'importe quel classeur ouvert sur ton Mac, mais l'inconvénient de la rendre inopérante, si tu transmet le classeur à quelqu'un qui ne l'a pas dans son classeur de macros personnelles :zen:

EDIT : Ah, au fait, pour qu'elle donne un code barre, il faut aussi avoir la police adéquate, que je n'ais pas.

EDIT Bis, je me suis procuré la police (même site que la macro), ça donne bien des codes barre correctement constitués.