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

Création d'une fonction

  • Initiateur de la discussion Initiateur de la discussion Sebwan
  • 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 !

S

Sebwan

Guest
Bonjour le forum,

Après avoir crée quelques macro VBA, j'aimerais construire une fonction, et je rencontre quelques problèmes (quelle dimension utilisée,...). L'idée est de partie de 2 vecteurs de nombres (mis en lignes ou en colonnes), afin d'en calculer une valeur actuelle...Mais je ne sais pas:

*quelle dimension utilisée pour les vecteurs
*comment aller rechercher l'élément i du vecteur
*comment aller rechercher la longueur de mes vecteurs (longueur variable, mais identique entre les 2 variables)...

Voici mon début de programmation (avec quelques erreurs...)

Merci d'avance!
 
Dernière modification par un modérateur:
Re : Création d'une fonction

Bonjour Sebwan,

Ben dites donc, faut travailler un peu VBA...

Cela dit, si vous nous disiez clairement ce que vous voulez que la fonction vous renvoie, on pourrait peut-être vous aider.

A+
 
Re : Création d'une fonction

Salut Job75 😉
Bonjour Sebwan

En plus de ce qu'a dis Job75, une petite feuille avec des données et le résultat excompté serait la bienvenue

A+
 
Re : Création d'une fonction

bonjour Sebwan, Bruno, job,

voici un essai :
Code:
Public Function actu(zone1 As Range, zone2 As Range) As Double
Dim i As Integer, j As Integer, tmp As Double
'zone1 et zone2 doivent être des données sous formes de colonnes
Set zone1 = zone1.Resize(zone1.Rows.Count, 1)
Set zone2 = zone2.Resize(zone2.Rows.Count, 1)
'si zone1 et zone2 ne font pas la même taille, quitter la fonction
If zone1.Cells.Count <> zone2.Cells.Count Then Exit Function
For i = 1 To zone1.Cells.Count
    tmp = 1
    For j = 1 To i
        tmp = tmp * (1 + zone2(j))
    Next j
    actu = actu + zone1(i) / tmp
Next i
End Function
a+
 
Re : Création d'une fonction

Re, salut mromain, tu es rapide 🙂

Ma solution (avec des plages dynamiques nommées dans la feuille) :

Code:
Function Actu(taux As Range, vale As Range) As Double
Dim prod As Double, i As Long
prod = 1
For i = 1 To taux.Count
prod = prod * (1 + taux.Cells(i, 1))
Actu = Actu + vale.Cells(i, 1) / prod
Next
End Function

Edit : peut-être peut-on se passer de VBA, avec une formule générale dans la feuille (quelque soit la dimension des vecteurs) ?

A+
 

Pièces jointes

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
374
D
Réponses
4
Affichages
1 K
R
Réponses
3
Affichages
4 K
R
O
Réponses
2
Affichages
1 K
olivier91620
O
P
  • Question Question
Réponses
1
Affichages
3 K
Patrosso
P
A
  • Résolu(e)
Réponses
5
Affichages
931
L
  • Question Question
Réponses
4
Affichages
1 K
louloubru
L
J
Réponses
3
Affichages
1 K
Jean pascal
J
O
Réponses
4
Affichages
2 K
othmane_007_007
O
V
  • Question Question
Réponses
5
Affichages
1 K
Vero2782
V
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…