(VBA) Probleme declaration fonction VBA

  • Initiateur de la discussion Initiateur de la discussion pjp666
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

pjp666

Guest
Bonjour,

J'ai un probleme sur quelque chose de tres simple mais j'ai l'impression d'avoir manque quelque chose car je n'arrive pas a le resoudre.

En fait quand je cree une fonction dans un module VBA, comme par exemple:

Public Function multiplication(a As Integer, b As Integer) As Integer

multiplication = a * b

End Function

et qu'ensuite je cherche a l'utiliser directement dans une formule excel:

=multiplication(3,4)

J'ai une erreur #NOM?

Ce qui signifit bien entendu qu'il ne reconnait pas la fonction. Pourtant la fonction est declaree au bon endroit (et elle est publique..), elle apparait bien dans le menu declaration en haut a droite de la fenetre VBA...bref je n'arrive pas a voir ce qui cloche.

Y aurait il une ame charitable pour me venir en aide svp?

Merci d'avance.

Bien cordialement,
 
Re : (VBA) Probleme declaration fonction VBA

Bonjour Pjp666, Salut le Forum

Ta fonction, pour être prise en compte en tant que publique, doit absolument être mise dans un module, et non dans une feuille. Dans ton projet VBA, il faut que tu insères un module pour y faire ta déclaration, sinon cela ne fonctionne pas 😉

@+
Fchris
 
Re : (VBA) Probleme declaration fonction VBA

Messieurs,

Tout d'abord merci pour votre accueil et votre aide!

Ensuite pour repondre a Fchris, ma fonction est bien dans un module et non simplement une feuille!

JeanPierre, je ne pense pas non plus que cela vienne de la ponctuation car quand je remplace ; par , cela me retourne une erreur.

En fait quand j'utilise l'auditeur de fonction, il me montre clairement que le probleme vient du nom de la fonction qui n'est pas reconnu. J'ai ce probleme au bureau et chez moi, dans les 2 cas je suis sous windows XP avec office XP.

Je ne pensais pas bloquer sur un truc aussi simple mais clairement, il y a un truc qui m'echappe.

En tout cas encore merci pour vos reponses et si quelqu'un a une autre idee, qu'il n'hesite pas a se manifester! merci.

Bien cordialement,
 
Re : (VBA) Probleme declaration fonction VBA

Bon j'ai trouve!

En fait c'etait tres bete mais la fonction etat declaree dans un module d'une autre feuille que celle que j'utilise. Je pensais naivement qu'en la declarant publique cela suffirait a la rendre operante dans toutes mes feuilles excel ouvertes (specialement car le module ou la fonction etait correspondait a ma feuille excel par defaut quand je demarre le programme)

Comme quoi on en apprend tous les jours.

Un grand merci pour votre aide a tous, et a bientot sur ce forum!

Bien cordialement,
 
Re : (VBA) Probleme declaration fonction VBA

Bonjour,

je me permets de déterrer cette discussion car mon problème ressemble fortement à celui qui est exposé plus haut : j'ai crée une fonction sous vba par clic droit sur le projet/insertion/Module (elle se contente de trouver une valeur dans un tableau) :

Code:
Function rechercheValeur(valeur As String) As String
'renvoi de la dernière position de la valeur dans le sens : gauche/droit puis haut/bas

Dim nbLignes, nbColonnes, abscisse, ordonnee As Integer

    nbLignes = ActiveSheet.Rows.Count
    nbColonnes = ActiveSheet.Columns.Count
    abscisse = 0
    ordonnee = 0
   
    For i = 1 To nbLignes
        For j = 1 To nbColonnes
            If Cells(i, j) = valeur Then
                abscisse = i
                ordonnee = j
            End If
        Next
    Next
    
rechercheValeur = CStr(abscisse) & " " & CStr(ordonnee)
End Function

Je l'appelle ensuite dans une procédure qui appartient au même projet VBA :
Code:
Sub test()
    ActiveSheet.Select
    result = Run(rechercheValeur, "2011")
    MsgBox result
End Sub

Lorsque j'exécute le test(), j'obtiens ce message d'erreur :
Erreur de compilation: Variable ou procédure attendue, et non un module

Certes, j'ai créé un module pour écrire ma fonction, mais cette dernière est bien une procédure ?
J'ai également essayé dans le test d'écrire simplement "result = rechercheValeur("2011"), sans plus de succès.

Avez-vous une idée ?
Je vous remercie d'avance.
 
Dernière modification par un modérateur:
Re : (VBA) Probleme declaration fonction VBA

Bonjour,
Je répond peut-être un peu tard mais au moins je tente...

Heummm je crois me souvenir que la fonction Run prend en premier paramètre le nom de la macro en chaine de caractères et non en direct comme tu le fais. Essaye avec ça :
result = Run("rechercheValeur", "2011")

Si cela ne fonctionne pas, essaye avec :
result = Run("Module1.rechercheValeur", "2011")
(à considérer que ta fonction est dans le Module1).
 
Re : (VBA) Probleme declaration fonction VBA

Bonjour,
Je répond peut-être un peu tard mais au moins je tente...

Heummm je crois me souvenir que la fonction Run prend en premier paramètre le nom de la macro en chaine de caractères et non en direct comme tu le fais. Essaye avec ça :
result = Run("rechercheValeur", "2011")

Si cela ne fonctionne pas, essaye avec :
result = Run("Module1.rechercheValeur", "2011")
(à considérer que ta fonction est dans le Module1).

Bonjour,

Merci pour votre réponse ! Etant sans retour, j'avais ouvert une autre discussion et finalement résolu le problème : j'avais nommé mon module (dans la case "Name") et ma fonction de manière similaire, ce qui fait que j'appelais effectivement un module en essayant d'appeler ma fonction.

Je ne me souviens plus si mon Run fonctionnait, mais je suis sûre que votre post aidera d'autres débutants en rade 🙂

A bientôt sur le forum !
 
Re : (VBA) Probleme declaration fonction VBA

Bonsoir,

C'est tous simple cela fonctionne via toute les version excel :

Code vba associer au fichier ci-join

formule perso :

au choix

=Multiplication(7;2)

soit le resutat de la multiplication est 14

ou

A1 la cellule a la valeur de 6
A2 la cellule a la valeur de 2

=Multiplication(A1;A2)

soit le Résultat de la multiplication est 12

Laurent
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
0
Affichages
785
Solo_Wing75
S
A
Réponses
12
Affichages
1 K
AnjyD
A
H
Réponses
13
Affichages
1 K
hlawson1
H
N
Réponses
6
Affichages
2 K
M
Réponses
3
Affichages
798
mexitinoco
M
B
Réponses
10
Affichages
2 K
billylooping
B
Réponses
18
Affichages
4 K
T
Réponses
2
Affichages
1 K
tetchounie
T
V
  • Question Question
Réponses
4
Affichages
2 K
voicesofthewind
V
Retour