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 :

Recherche de code vba pour effectuer une prevision sur 50ans [XL-MAC 2016]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Recherche de code vba pour effectuer une prevision sur 50ans
    Bonjour à tous ,


    je recherche un code plus simple qui me permettra de calculer facilement " calculN+50" sans avoir a le faire étape par étape comme l'exemple ci-dessous. Merci de me venir en aide .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub N1()
        Dim annee As Integer
        annee = Year([date_fin]) + 1
        Call remplissageFeuilleSuivante("CalculN", "CalculN+1", annee)
    End Sub
    Sub N2()
        Dim annee As Integer
        annee = Year([date_fin]) + 2
        Call remplissageFeuilleSuivante("CalculN+1", "CalculN+2", annee)
    End Sub

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Il faudrait déjà avoir le code de la Sub remplissageFeuilleSuivante() pour savoir comment le modifier car quand je vois les arguments passés je suis assez curieux ("CalculN", "CalculN+1", annee) !

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Ma manière personnelle de guider vers la solution.
    Regarde ce que fait ceci, analyse, comprends et utilise :
    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
    Private Sub toto()
     Dim annee As Integer, k As Integer
     annee = 2018
     For k = 0 To 50
       remplissageFeuilleSuivante k, annee
     Next
    End Sub
     
    Private Sub remplissageFeuilleSuivante(k As Integer, annee As Integer)
       Dim suf As String, la_feuile As String, annee1 as integer, annee2 as integer
       If k = 0 Then suf = "" Else suf = "+" & k
       la_feuille = "Calcul" & suf
       annee1 = annee + k
       annee2 = annee + k + 1
      'et fais tes traitements sur la feuille la_feuille et les années annee1 et annee2
      'regarde ce qu'elle valent --->>
      MsgBox la_feuille & "  " & annee1 & "  " & annee2
    End Sub
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Il faudrait déjà avoir le code de la Sub "remplissageFeuilleSuivante()" pour savoir comment le modifier car quand je vois les arguments passés je suis assez curieux ("CalculN", "CalculN+1", annee) !


    Voici le sub remplissage :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    Sub remplissageFeuilleSuivante(ByVal feuille1 As String, ByVal feuille2 As String, ByVal annee As Integer
     
        Dim nbLignes As Integer
        Dim InfoCols As Range 'Tableau de paramétrage des entrées et fonction, feuille "Param"
        Dim NRows As Integer
        Dim Row As Integer
        Dim Col As Integer
        Dim FormulaVec() As String, Formulas()
        Dim command As Variant, NumberFormat As String, ChangeNumberFormat As Boolean
        Dim j As Integer
        Dim date_init As Date
        Dim date_fin As Date
        Dim start, finish, total As Double
     
        start = Timer
     
        Set InfoCols = Range("Info_Cols") 'paramétrage sortie ligne à ligne
        NRows = InfoCols.Rows.Count 'Nombre de colonnes en sortie (éventuellement vides)
        date_init = DateSerial(annee - 1, 12, 31)
        date_fin = DateSerial(annee, 12, 31)
     
        With ThisWorkbook.Sheets(feuille1)
            nbLignes = 2
            While .Cells(nbLignes, 1) <> ""
                nbLignes = nbLignes + 1
            Wend
            nbLignes = nbLignes - 1
        End With
     
        With ThisWorkbook.Sheets(feuille2)
            .Cells.ClearContents
            .Cells.NumberFormat = "General"
            .Cells.Interior.Pattern = xlNone
            .Cells.Interior.TintAndShade = 0
            .Cells.Interior.PatternTintAndShade = 0
     
     
            Col = 0
            For Row = 1 To NRows
     
                'Passage à la colonne suivante
                Col = Col + 1
     
                'Titres et couleurs en-têtes
                .Cells(1, Col) = InfoCols(Row, 1)
                .Cells(1, Col).Interior.Color = InfoCols(Row, 1).Interior.Color
     
                'Récupération sortie voulue = command
                command = InfoCols(Row, 1 + colonne_fonction_info_cols)
     
                If command <> "" Then
     
                    command = Replace(command, "date_fin", CDbl(date_fin))
                    command = Replace(command, "date_deb", CDbl(date_init))
     
                    If InfoCols(Row, 2) = 1 Then
                        command = insertionFeuille(feuille1, command)
                    End If
     
                    'Cas command = nombre
                    If WorksheetFunction.IsNumber(command) Then
                        .Range(Cells(2, Col).Address, Cells(nbLignes, Col).Address).Value2 = command
     
                    'Cas command = formule
                    Else
                        'lecture formule
                        FormulaVec = readFormula(command, InfoCols)
                        'vecteur de la taille du portefeuille
                        ReDim Formulas(1 To nbLignes - 1)
                        'Formules avec lignes correspondantes
                        For j = 2 To nbLignes
                                Formulas(j - 1) = RowFormula(FormulaVec, j)
                        Next
                        'Copie formule
                        .Range(ColNum2Text(Col) & 1 + 1 & ":" _
                                                  & ColNum2Text(Col) & nbLignes).Formula = Formulas
     
                    End If
     
                End If

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tu veux prévoir quoi sur 50 ans ? À moins que les erreurs en moins compensent exactement les erreurs en plus, le total au bout de 50 ans sera juste farfelu.


    Et puis, comme tu ne sais jamais si ta prévision de l'année suivante, ni celle de l'année précédente, d'ailleurs, étaient à court ou en trop, ni l'ordre de grandeur de la différence, cela ne mène absolument à rien; à part que de montrer au professeur que tu es capable de produire 50 feuilles par macro.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    Tu veux prévoir quoi sur 50 ans ? À moins que les erreurs en moins compensent exactement les erreurs en plus, le total au bout de 50 ans sera juste farfelu.


    Et puis, comme tu ne sais jamais si ta prévision de l'année suivante, ni celle de l'année précédente, d'ailleurs, étaient à court ou en trop, ni l'ordre de grandeur de la différence, cela ne mène absolument à rien; à part que de montrer au professeur que tu es capable de produire 50 feuilles par macro.


    L'idée est de réaliser une prévision des revenus sur 50 ans . ce sont des estimations

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    L'idée est de réaliser une prévision des revenus sur 50 ans . ce sont des estimations
    En monnaie courante ou en monnaie constante (ce n'est pas la même chose du tout et c'est très important, sur une longue durée )

    EDIT : à lire (j'ai choisi là le plus simple à comprendre) :
    https://www.maxicours.com/soutien-sc...de/223348.html

    Et si l'on ramène (ce qui est le plus logique) l'estimation des revenus à celle du pouvoir d'achat : bien fort serait celui qui serait capable d'estimer l'évolution des indices au cours des 50 années à venir.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par unparia Voir le message
    En monnaie courante ou en monnaie constante (ce n'est pas la même chose du tout et c'est très important, sur une longue durée )


    En monnaie courante sous l'hypothèse de taux de rendement fixe .

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    En monnaie courante sous l'hypothèse de taux de rendement fixe .
    Ne pas confondre double-pattes et patachon.
    Les pays où le "taux de rendement" s'est avéré nettement supérieur à celui de l'inflation n'ont pas manqué. Il y en a même un dont tout le monde parle en ce moment (en Amérique Centrale ...)
    Relis mon edit dans mon message précédent
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par tidi77 Voir le message
    En monnaie courante sous l'hypothèse de taux de rendement fixe .
    Donc, tu es parti tout de travers. Si tu as un taux de rendement fixe, cela veut dire que tu dois augmenter tes montants en pourcentage et non en montant fixe. C'est la règle liée à l'intérêt composé. Les seules exceptions sont les obligations, les débentures et les cas où l'investisseur encaisse directement les intérêts sans qu'ils ne soient réinvestis.

    Valeur finale d'un montant d'un montant fixe placé à intérêts composés durant 50 ans, les intérêts capitalisés annuellement:

    s =P* (1+i) ^ 50

    où :
    a= valeur finale
    P=montant investi
    i= taux d'intérêt annuel exprimé en décimales

    Et puis, même pas besoin de VBA, la formule est déjà intégrée à Excel
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

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

Discussions similaires

  1. [XL-2007] Code vba pour réactualiser une requete query
    Par facteur dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 08/06/2015, 15h26
  2. [XL-2010] Code vba pour extraire une chaîne spécifique de caractéres
    Par samy35 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 25/09/2013, 18h34
  3. Réponses: 2
    Dernier message: 14/10/2009, 08h57
  4. recherche du code VBA pour executer ma requete
    Par gwems dans le forum VBA Access
    Réponses: 28
    Dernier message: 19/03/2009, 23h26
  5. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48

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