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
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)