XL 2013 Passer une plage nommée de cellules comme argument d'une fonction personnalisée

alFassi

XLDnaute Nouveau
:confused:
Excel VBA Experts
J'essaie de passer sans succès le nom d'une plage de cellules comme argument d'une fonction personnalisée tel que l'on peut le faire avec une formule d'Excel.
Malheureusement j'obtiens le message erreur #VALEUR :confused:
Je joins un exemple avec la fonction sinus.
D'avance merci de me faire profiter de votre expertise :).
 

Pièces jointes

  • Plage de cellules en argument de fonction personnalisée.xlsm
    15.5 KB · Affichages: 28
  • Plage de cellules en argument de fonction personnalisée.xlsm
    15.5 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Re : Passer une plage nommée de cellules comme argument d'une fonction personnalisée

Bonjour à tous

alFassi [Bienvenue sur le forum]
J'essaie de passer sans succès le nom d'une plage de cellules comme argument
Tu as rencontré le même insuccés pour commencer ton post par un petit bonjour...:rolleyes:
(comme c'est pourtant la coutume ici)
-> voir la charte du forum à ce sujet
extrait de la charte du forum
2 – Lorsqu’on rentre sur un fil, comme dans la vie de tous les jours, on est poli en disant « Bonjour ».
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Passer une plage nommée de cellules comme argument d'une fonction personnalisée

Bonjour.

Excel est incapable de détecter si un paramètre de fonction personnalisée doit être une cellule unique ou une plage de plusieurs cellules. La solution c'est soit de prévoir la possibilité dans la fonction en récupérant le Range, soit de spécifier l'intersection avec la colonne. Ici, en B7 :
Code:
=sinus(Plage B:B)
Autre possibilité qui marche aussi: obliger Excel à constater qu'il faut une cellule unique :
Code:
=sinus(Plage+0)
 
Dernière édition:

alFassi

XLDnaute Nouveau
Re : Passer une plage nommée de cellules comme argument d'une fonction personnalisée

Merci pour votre réponse
Effectivement le code qui oblige Excel à constater qu'il faut une cellule unique fonctionne :)
Mais je ne connaissais pas cette syntaxe +0 pouvez-vous m'en dire plus?

a
Bonjour.

Excel est incapable de détecter si un paramètre de fonction personnalisée doit être une cellule unique ou une plage de plusieurs cellules. La solution c'est soit de prévoir la possibilité dans la fonction en récupérant le Range, soit de spécifier l'intersection avec la colonne. Ici, en B7 :
Code:
=sinus(Plage B:B)
Autre possibilité qui marche aussi: obliger Excel à constater qu'il faut une cellule unique :
Code:
=sinus(Plage+0)
 

Dranreb

XLDnaute Barbatruc
Re : Passer une plage nommée de cellules comme argument d'une fonction personnalisée

C'est évident: il ne peut ajouter 0 à la ligne, alors il l'ajoute à l'intersection avec la colonne où se trouve la formule, et le résultat peut alors être converti en un Double unique. Mais c'est une addition inutile. Je préfère spécifier l'intersection à l'aide de l'opérateur d'intersection, qui est l'espace.
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Passer une plage nommée de cellules comme argument d'une fonction personnalisée

Bonsoir,

Fonction perso matricielle qui retourne un tableau !

-sélectionner b7:R7
=sinus(Plage)
-valider avec maj+ctrl+entrée

Code:
Function Sinus(champ As Range)
'x exprimé en degrés sexagimaux
Dim pi As Double, i
Dim a(): ReDim a(1 To champ.Count)
For i = 1 To champ.Count
  pi = WorksheetFunction.pi()
  a(i) = Sin(champ(i) / 180 * pi)
 Next i
 Sinus = a
End Function

exemples Fonctions personnalisées

JB
 

Pièces jointes

  • Plage de cellules en argument de fonction personnalisée.xlsm
    15.6 KB · Affichages: 38
  • Plage de cellules en argument de fonction personnalisée.xlsm
    15.6 KB · Affichages: 31
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 886
Membres
103 018
dernier inscrit
mohcen23