Comment lancer cette fonction avec une macro [Résolu]

Signaler
Messages postés
3
Date d'inscription
dimanche 25 décembre 2005
Statut
Membre
Dernière intervention
8 décembre 2009
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour à tous,
J'ai un petit soucis avec la fonction suivante; je voudrais la lancer avec une macro mais je coince sur les définitions
de variables.
Je travaille sous excel 2003

'Fonction permettant d'utiliser au sein d'un programme en VBA,
'la valeur d'une cellule définie par son nom dans un fichier Excel (cClasseur)
'sans savoir dans quelle feuille du classeur est défini ce nom (cnomvar)
'(Nom défini en global dans le classeur)
'
Public Function ValeurNom(cClasseur As String, cnomvar As String)
Dim nNewVal As Variant, nPosi As Integer, cCC1 As String, cCV1 As String
On Error GoTo VersInconnu
nNewVal = Workbooks(cClasseur).Names(cnomvar).RefersTo
nPosi = InStr(1, nNewVal, "!", 0)
If Mid$(nNewVal, 2, 1) <> "'" Then
    cCC1 = Mid$(nNewVal, 2, nPosi - 2)
Else
    cCC1 = Mid$(nNewVal, 3, nPosi - 4)
End If
cCV1 = Mid$(nNewVal, nPosi + 1)
ValeurNom = Workbooks(cClasseur).Sheets(cCC1).Range(cCV1).Value
VVEnd:
Exit Function
VersInconnu:
ValeurNom = 0
Resume VVEnd
End Function

Merci à JB pour cette fonction
et à ceux qui pourront m'aider à l 'utiliser

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Pour la lancer, il faut lui fournir les deux chaines qu'elle réclame :
   Call ValeurNom("la chaine 1", "la chaine 2")
Puisque ta fonction renvoie une valeur (Chaine ou Long ?), il faudra modifier sa déclaration :
   Public Function ValeurNom(cClasseur As String, cnomvar As String) As String     ou As Long
et l'appeler comme ça :
   maVariable = ValeurNom("la chaine 1", "la chaine 2")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)