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 :

Macro étalement d'un montant sur une durée


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut Macro étalement d'un montant sur une durée
    Bonjour à tous,

    Dans le cadre d'un stage en entreprise, je dispose de nombreuses entrées de type, par colonnes :
    Montant
    Date début
    Date fin

    Janvier
    Février
    ...
    Décembre

    Et je cherche à étaler le montant sur les différents mois correspondants à la durée, de façon proportionnelle.
    J'ai écrit un code qui marche plutôt bien (je suis pas super forte en VBA donc c'est possible que ce ne soit pas la meilleure façon de faire). Cependant, je suis complètement bloquée lorsque la durée est supérieure à 12 mois.

    Je vous mets mon code ici :

    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
    Sub Monthly_Computation()
     
    nb_col = Worksheets("Past & On-going").Range("A1").End(xlToRight).Column
     
     
    For j = 2 To nb_col
     
    Worksheets("Past & On-going").Columns(j).Activate
     
     
    Total = Selection.Range("A7").Value - Selection.Range("A6").Value + 1
     
     
    nb_first = 31 - Day(Selection.Range("A6")) + 1
    nb_last = Day(Selection.Range("A7"))
    nb_inter = Month(Selection.Range("A7")) - Month(Selection.Range("A6")) - 1
     
     
    For i = 1 To 12
     
        If Month(Selection.Range("A6")) = i Then
            first_amnt = (nb_first / Total) * Selection.Range("A5").Value
            Selection.Range("A" & 11 + i).Value = first_amnt
        End If
     
     
        If Month(Selection.Range("A7")) = i Then
            last_amnt = (nb_last / Total) * Selection.Range("A5").Value
            Selection.Range("A" & 11 + i).Value = last_amnt
        End If
     
    Next i
     
     
     
    rest = Selection.Range("A5").Value - first_amnt - last_amnt
     
    For k = 1 To 12
     
        If Month(Selection.Range("A6")) + nb_inter = k Then
            If rest > 1 Then
                Selection.Range("A" & 11 + k).Value = rest / nb_inter
                    If nb_inter > 1 Then
                        For l = Month(Selection.Range("A6")) + 1 To Month(Selection.Range("A6")) + nb_inter - 1
                        Selection.Range("A" & 11 + l).Value = rest / nb_inter
                        Next l
                    End If
            End If
        End If
     
    Next k
     
    Next j
     
    End Sub
    Et ci-joint se trouve mon fichier pour que vous ayez une meilleure idée de ce que je cherche à faire. Revenues v4.xlsm

    Je pense que je vais être obligée de faire quelque chose comme suit directement sur mon fichier Excel:
    Janvier 15
    février 15
    ...
    décembre 15

    Janvier 16
    Février 16
    ...
    Décembre 16

    Mais je ne vois pas bien comment traduire ça sur VBA...


    Vraiment si vous aviez une petite idée de comment je pourrais m'en sortir, vous me sauveriez !


    Un GRAND merci d'avance !

    Clem

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut
    Hello c'est encore moi ! Si l'un d'entre vous a ne serait-ce qu'une petite idée ça m'aiderait beaucoup ... Je suis toujours bloquée

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    C'est pas ce que tu veux ,mais il y a tout!

    http://www.tableau-amortissement.fr/...el-openoffice/

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut
    Hello !

    Merci beaucoup pour ta réponse
    Je suis vraiment désolée mais je ne comprends pas bien comment marche le fichier et surtout en quoi il pourrait m'aider.
    Si tu pouvais m'en dire un petit peu plus ce serait génial !

    Merci beaucoup !

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

Discussions similaires

  1. [AC-2007] Calcul sur une durée
    Par Nounours1 dans le forum IHM
    Réponses: 6
    Dernier message: 11/01/2010, 19h03
  2. Réponses: 4
    Dernier message: 18/08/2008, 11h40
  3. Conflit sur une durée de préavis
    Par Saturnin dans le forum Démission
    Réponses: 5
    Dernier message: 27/04/2007, 13h23
  4. [8.5] calcul de moyenne sur une durée
    Par rihiveli dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 27/04/2007, 11h06
  5. Compléter les trous d'une requête groupée sur une durée
    Par apoingsfermes dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/01/2007, 19h47

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