Fonction vba non reconnue en tant que procédure

alyscamps

XLDnaute Nouveau
Bonjour,

je me permets de reposer ma question dans cette nouvelle discussion : j'ai créé une fonction sous vba par clic droit sur le projet/insertion/Module (la fonction 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.
 

alyscamps

XLDnaute Nouveau
Re : Fonction vba non reconnue en tant que procédure

Je vous remercie, ça marche parfaitement !
Si d'autres se posent la question, il suffisait d'écrire la fonction dans le même module que la procédure dans laquelle on l'utilise.
A bientôt sur ce forum,
 

alyscamps

XLDnaute Nouveau
Re : Fonction vba non reconnue en tant que procédure

Faux: On peut utiliser une fonction a partir de n'importe quel module pour peu que la fonction soit dans un module standard

Mille excuses !
Pourtant, lorsque je colle ma fonction sous mon test, ce dernier fonctionne (j'en ai profité pour rajouter un "Option Compare Text" au début).
J'ai dû mal définir mon module contenant ma fonction la première fois : clic droit sur "Modules">Insertion>Module (j'ai refait la manip pour être sûre). Ai-je oublié un mot-clé/une étape ?
Merci pour votre aide,
 

alyscamps

XLDnaute Nouveau
Re : Fonction vba non reconnue en tant que procédure

J'ai (enfin) tiré cette histoire au clair : j'avais nommé mes procédures/fonctions comme les modules les contenant (le nom après le "Sub"/"Function" et le nom dans les propriétés (Name)). Du coup, quand j'appelais mes procédures/fonctions, j'utilisais effectivement un nom de module. La solution : changer les noms des modules tout en continuant à appeler les procédures/fonctions par leur nom (l'expression après le "Sub"/"Function").
J'espère que cette fois je ne me trompe pas, en tout cas, ces manips ont résolu mon problème :)
Merci à pierrejean pour ses réponses !
 

Discussions similaires

Statistiques des forums

Discussions
312 380
Messages
2 087 787
Membres
103 664
dernier inscrit
wolvi71