Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

alFassi

XLDnaute Nouveau

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
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...
(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:

Staple1600

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

Re, Bonjour Dranreb

Question:
Pourquoi passer par VBA quand ta formule [highlight]=SIN(Plage/180*PI())[/code] fonctionne ?
 

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
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…