Rechercher : dans
Par :

Function VBA avec des arguments nommes

irr, le 3 jui 2009 à 01:12:47 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Firefox 3.5

Meilleures réponses pour « Function VBA avec des arguments nommes » dans :
VBA Un timer une seconde tout simple VoirEn VBA, il n'y a pas (du moins à ma connaissance) de composant Timer. On peut en créer un très facilement. Dans un module de feuille Activer/ dés activer le timer : Placer un bouton sur Feuil1 et mettre le code... Private Sub...
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
Suppression impossible : liste d'arguments trop longue VoirSuppression impossible : liste d'arguments trop longue Finalité Je souhaite supprimer des fichiers (par exemple tous les fichiers d'extension .toto) dans un répertoire mais la commande "rm *.toto" me renvoie :bash: /bin/rm: Argument list too...