XL 2016 VBA fonction personnalisée

  • Initiateur de la discussion Initiateur de la discussion solgti
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

solgti

XLDnaute Junior
Bonjour je tente de créer un fonction personnalisée qui pour sont calcul devra utiliser des données en array récupérées d'un tableau Excel.
Si je fais une procédure le array fonctionne (voir TestS dans le fichier joint)
mais si je fais un fonction le array ne fonctionne pas (voir TestF dans le fichier joint)

Ce que je souhaite en bout de ligne c'est d'avoir une fonction qui pourra être appelé d'une cellule avec des arguments, comme par exemple dans mon fichier:
=TestF("A1";"2015-02-06") retourne la valeur 100
En attendant je bloque simplement sur l'array
Si vous tester avec le Bouton 1, ça écrit la colonne 1 de l'array dans la colonne F
et si vous tester la fonction TestF qui est dans la cellule E4, ça devrait écrire la colonne 1 dans la colonne G, mais tous ce que ça fait c'est #Valeur!
J'espère que c'est clair.
MErci
solgti
 

Pièces jointes

Bonsoir.
Une formule de cellule invoquant (ou non) une fonction personnalisée ne peut rien changer de dur dans un classeur, elle ne peut en particulier pas changer le contenu de cellules. (Du moins pas par ses seuls moyens propres … mais … il y a une ruse …)
Tout ce qu'elle peut faire c'est changer la valeur de la cellule ou de la plage matricielle qui la porte selon ce qu'elle retourne.
Par ailleurs elle doit en principe admettre des paramètres, sinon Excel n'est pas fondé à devoir la réévaluer quand les données sur lesquelles elle se base secrètement changent.
Une Function invoquée différemment, par VBA, en dehors d'une phase d'évaluation de formule peut en revanche modifier ce qu'elle veut.
 
Dernière édition:
En fait, mon objectif est de faire une fonction de type financière qui calcul le rendement annuel d'un placement qui peut avoir eu au fil du temps des dépôts et des retraits, ces dépôts et retraits sont dans un base de données.
Exemple:
Placement "A" dépôt initial 1000$ le 2014-12-31
Placement "A" dépôt 250$ le 2015-06-30
Placement "A" retrait 100$ le 2015-09-30
Placement "A" dépôt 200$ le 2016-06-30
Valeur actuelle 1500$ en date du 2016-11-30

Donc la fonction rendement annuelle doit utiliser comme paramètre les données du placement
je voudrais inscrire dans la cellule A1 le nom du placement, ici Placement "A" et dans la cellule B1 la fonction =RendementAnnuel(A1)
la fonction recherche dans la base de données tous les montants et retourne dans la cellule B1 le % de rendement.

Donc pour ce faire la fonction doit trouver tous les mouvements monétaire dans la BD, mais toutes mes tentatives ne permettent pas de faire un recherche dans un tableau, onter un array et faire le calcul et le retourner.

j'espère que je suis explicite.

merci

solgti
 
Donc la fonction rendement annuelle doit utiliser comme paramètre les données du placement
Donc ça commence par :
VB:
Function TestF(ByVal PlgPlac As Range) As Double
Dim DonPlac()
DonPlac = PlgPlac.Value
'…
Le reste je n'ai pas compris.
Mais à condition qu'elle affecte un résultat de calcul à son propre nom, cette fonction pourrait attribuer cette valeur de résultat à une cellule qui porterait :
Code:
=TestF(Tableau_De_Données)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
210
Réponses
4
Affichages
176
  • Résolu(e)
Microsoft 365 transposer
Réponses
6
Affichages
185
Réponses
10
Affichages
269
Réponses
6
Affichages
244
Retour