IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Calcul de rendement [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 29
    Par défaut Calcul de rendement
    Bonjour,

    J'ai un projet VBA a faire et je cherche a calculer le rendement avec la formule suivante: (pt -pt+1)/pt et je n'arrive pas à le faire sous VBA.
    J'ai récupérer le cours des action du CAC 40, chaque action étant dans une feuille.

    Si quelqu'un peu m'aider merci d'avance.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 704
    Par défaut
    Bonjour et bienvenue sur le forum

    Ta question est un peu vague. On ne connait pas la construction de ton fichier, alors c'est difficile de te dire ce que tu pourrais faire. Où est ton problème? As-tu déjà un bout de code, mais tu as une erreur? Si oui, laquelle et où exactement? Est-ce que tu ne sais pas quelle fonction utiliser pour une certaine fonctionnalité? Laquelle?

    Avec ta question actuelle, je peux seulement te dire, qu'en VBA, on peut utiliser les operateurs habituels sans problèmes. Par exemple si en A1, il y a p(t) et en A2, il y a p(t+1). Le rendement peut se calculer comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rdt As Double
    rdt = (Range("A1").Value - Range("A2").Value)/Range("A1").Value
    Il serait peut-être bon de vérifier à l'avance que p(t) est bien différent de 0 pour ne pas avoir de problèmes avec la division.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rdt As Double
    If Range("A1").Value <> 0 Then
        rdt = (Range("A1").Value - Range("A2").Value)/Range("A1").Value
    Else
        rdt = 0     'à adapter éventuellement
    End If
    Après, avec une formule aussi simple, je ne vois pas l'intérêt de le faire en VBA. Je trouve même que c'est plus simple de le faire "à la main".
    Est-ce que la formule du rendement est bien (pt -pt+1)/pt ? Ne serait-ce pas plutôt (pt+1 - pt) / pt ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 29
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse, en effet me j'ai un inverser le pt, pt+1, mon soucis étant que je dois commencer à partir de la dernière cellule et reporter le résultat dans la colonne suivante. De plus ce calcul doit se faire dans toute mes feuilles, car j'ai une valeur du CAC 40 par feuille. Je ne joindre mon fichier celui étant beaucoup trop lourd, je joint des photos de mon fichier. Nom : VBA2.PNG
Affichages : 2712
Taille : 39,0 KoNom : vba 1.PNG
Affichages : 2855
Taille : 34,9 KoNom : vba 1.PNG
Affichages : 2855
Taille : 34,9 Ko

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub rentabilité()
     
     
    Dim rdt As Double
    Dim pt As Double
    Dim pt1 As Double
     
    Dim k As Integer, i As Integer, j As Integer, g As Integer
     
     k = Sheets.Count
     
     For i = 1 To k
     Sheets(i).Activate
     
             For j = 1 To 4439
     
        rdt = (Range("G1").Value - Range("G2").Value) / Range("G1").Value
     
                 For g = 1 To 4439
                 Range("H1").Value = rt
     
                    Next g
     
             Next j
     
         Next i
     
     
    End Sub
    j'ai un message d'erreur me disant que je dépasse la dimension, faut-il que je convertisse une de mes variables pour palier le pb ?

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 704
    Par défaut
    Je ne joindre mon fichier celui étant beaucoup trop lourd
    De toute façon, les règles du forum demandent à ce qu'on n'envoie pas de fichier.

    Pourquoi faut-il commencer par la dernière ligne? Cela n'influence en rien la formule?!
    En créant des tabelaux à partide tes données, tu peux très rapidement avoir les résultats sans passer par VBA : http://silkyroad.developpez.com/excel/tableau/

    Si, néanmoins, il faut à tout prix passer par VBA. Je procéderai, ainsi :
    • Créer une fonction rendement(val1 As Double, val2 As Double) qui renvoie le rendement entre val1 et val2
    • Faire une boucle sur l'ensemble des cellules pour lesquelles il faut calculer le rendement
    • Dans la boucle calculer le rendement à partir de la fonction créée auparavant et noter ce résultat dans la bonne colonne


    Où est-ce que tu bloques exactement?

  5. #5
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 704
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     For j = 1 To 4439
         rdt = (Range("G1").Value - Range("G2").Value) / Range("G1").Value
         For g = 1 To 4439
             Range("H1").Value = rt
         Next g
     Next j
    Attention, je pense que tu n'as pas bien compris l'intérêt de la boucle !
    1. A chaque itération, tu peux faire le calcul du rendement ET écrire le résultat dans la bonne colonne. Pourquoi fais-tu 2 boucles imbriquées??
    2. L'intérêt d'une boucle est qu'on incrément gâce à l'indice j, par exemple. Ici, à chaque itération tu fais le calcul pour la même ligne (dans ton cas lignes 1 et 2.). Il faut que tu utilises ton indice j pour aller d'une ligne à l'autre. Inspire-toi de la formule mathématiques que tu as donné au début. *


    * petit indice : lorsqu'on a une variable pour indiquer le numero de ligne, on écrit la cellule de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Long
    For i = 1 To 10
        Range("A" & i).Value = i
    Next i

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2011] VBA -Calculer le rendement et mettre résultats dans une autre feuille
    Par chou2best dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/10/2015, 13h59
  2. Calcul de rendement grâce au solveur
    Par delma dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/02/2011, 10h24
  3. Calculer le rendement dans MATLAB
    Par nadim216 dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/09/2009, 16h25
  4. Calculer un rendement
    Par remilecool dans le forum SQL
    Réponses: 2
    Dernier message: 12/04/2009, 23h30
  5. Calcul de rendements
    Par bb888 dans le forum SAS Base
    Réponses: 7
    Dernier message: 21/11/2008, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo