Function VBA avec des arguments nommes

Fermé
irr Messages postés 3 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 juillet 2009 - 2 juil. 2009 à 13:48
Bonjour,

Soit une fonction VBA comme celle-ci

Function VolumeCylindre(Dia, Haut)
    Application.Volatile
    VolumeCylindre = Application.Pi() * Dia ^ 2 / 4 * Haut
End Function

Une telle fonction ne marche pas si les paramètres Dia et Haut sont des champs segments de lignes ou colonnes nommes (par exemple Diametre=A1:A100 Hauteur=B1:B100 et que en colonne C de 1 à 100 on ecrit
=VolumeCylindre(Diametre, Hauteur)

Pour que cela marche je fais l'analyse des variables (valeur numerique constante, cellule unique, colonne ou ligne) à travers par exemple de la fonction suivante

Function VdeX(xXx)
'Application.Volatile
    VdeX = xXx                  ' au cas ou xXx est une constante
    If TypeOf xXx Is Range Then
       With Application.Caller
          If xXx.Cells.Count = 1 Then                         'cellule unique
             VdeX = xXx
'             vdex = xXx(.Row - xXx.Row + 1)
          ElseIf xXx.Columns.Count = 1 Then                   'colonne
             VdeX = xXx(.Row - xXx.Row + 1)
          ElseIf xXx.Rows.Count = 1 Then                      'ligne
             VdeX = xXx(.Column - xXx.Column + 1)
          Else
             VdeX = ""
          End If
       End With
    End If
End Function


et je dois modifier la fonction cylindre de la maniere suivante

Function VolumeCylindre(Dia, Haut)
    Application.Volatile
    Dia = VdeX(Dia)
    Haut = VdeX(Haut)  
    VolumeCylindre = Application.Pi() * Dia ^ 2 / 4 * Haut
 End Function



QUESTION
y a t il une méthode plus COURTE pour ecrire une fonction avec passage des arguments nommes