Valeur figée si MOIS = MOIS + 1

Bonjour les personnes du forum

Dans mon fichier,

Je calcule un total de paiement qui s'incrémente durant le mois. (Total_Mensuel) basé sur une boucle allant de M = 1 to 12

A la fin de chaque mois, cette valeur Total Mensuel devrait être "figée". on dira Total_Fige = Total Mensuel

S'il y a des paiements qui se rapportent à ce mois (ex: des paiements fait en avril pour février) ceux-ci doivent continuer d'incrémenter Total_Mensuel mais pas Total_Figé.

Une valeur Ecart_Actualise calculera Total Mensuel - Total Figél

Comment faire pour extraire et stocké Total_Figé lorsque le mois passe dans la boucle de M à M+1

Si quelqu'un pouvait me mettre sur la voie

Un grand merci

Guy

Bonsoir,

Si ta formule de calcul du total mensuel ne totalise que le mois pour lequel elle est définie, elle ne totalisera pas autre chose et le total n'a nul besoin d'être "figé".

Je ne peux rien dire de plus sans fichier illustrant le problème posé.

Bonsoir MFerrand,

Merci de prendre ma demande en considération.

Comme tu pourras le voir dans le fichier attaché, le Ch AFF mensuel peut "grossir" après le mois en cours par des factures payées ultérieurement.

Rendu le dernier jour du mois en cours, Ch AFF Mensuel doit être "copié" dans Montant Figé du mois correspondant

Ma requête voudrait que dans la colonne Montant figé, celu-ci ne puisse plus varier après le mois en cours.

Espérant que le fichier vaudra 1000 mots.

Un grand merci

Guy

Le fichier me montre que ton bilan est fait par macro, dans lequel les montants mensuels figés et actualisés sont pris en considération.

Donc, qu'est-ce qui manque ?

On en parle mais on le fait ?

Tes précisions sont destinées à me permettre de ne lire que les lignes intéressant le problème !

Et autre précision qui me semble utile pour intervenir : quel est le critère déterminant du "mois en cours" ? date de commande ? date de visite ? ou date de facturation ?

Cordialement.

MFerrand,

Oui, Tu as raison pour le critère date

Il faut tenir compte de la date de paiement qui détermine dans quel mois la facture est payée

si le mois de la date de paiement est égal au mois en cours (valeur M dans la boucle) alors

Ch AFF Mensuel et Montant Figé sont augmentés.

Si le mois de la date de paiement est supérieure au mois en cours (valeur M dans la boucle), alors

seul Ch AFF Mensuel est augmenté.

Tes questions m'aide à être plus précis. Merci

Tu verras dans le module 1 que j'ai laissé le calcul du Montant_Figé en "commentaires"

parce que je n'arrive pas à programmé la condition de date

Si tu peux m'aider ou quelqu'un du forum ce serait apprécié

Merci

Guy

C'est donc la date de visite qui est le critère mois !

Reste un point à éclaircir : dans la mesure où tu ne fais pas la distinction pour le chiffre d'affaire, cela veut-il dire que la notion de figé ne s'y applique pas ?

D'autre part, si tu fais Montant actu = Chiffre d'affaire - Montant figé, ce n'est pas le Mt actualisé que tu calcules mais l'actualisation !

Quoique en vérifiant ton premier post, tu parles bien de l'écart, donc ! OK !

Donc, si on résume, le chiffre d'affaire mensuel se partage entre un montant des factures payées dans le mois (le figé) et celui des factures payées ensuite. C'est donc au prélèvement des chiffres qu'il faut vérifier la date de paiement et cumuler l'actualisation.

Tu m'as un peu perturbée avec ta 2e dimension de variable 1 to 1 ! ton total annuel fait à chaque tour de boucle ! et une floppée de variable que tu n'utilise pas directement puisque tu n'utilises que les 2 variables chiffres d'affaire pour prélever les chiffres. On aurait pu donc s'en passer et tout servir à partir de ces 2 variables plus 1 pour l'actu qu'il faut aussi prélever.

Si on est bien d'accord sur les définitions figé / actu, je t'arrange ça demain. Quoique : 5h00 chez moi ! Après avoir dormi un peu donc !


Bon matin,

"Donc, si on résume, le chiffre d'affaire mensuel se partage entre un montant des factures payées dans le mois (le figé) et celui des factures payées ensuite. C'est donc au prélèvement des chiffres qu'il faut vérifier la date de paiement et cumuler l'actualisation."

Oui c'est exactement ça"

L'onglet "facture" est en réalité importé d'un fichier "facturation". Je ne montre que les lignes nécessaires.

En réalité ce fichier comprends beaucoup beaucoup plus de lignes.

Aussi, tu as raison : Actualisation = Écart entre les 2 montants (Ch AFF et Figés).

Toutes les factures dont la dates de facturation sont dans le mois de la boucle M (1 à 12) doivent se retrouver incrémentées dans Ch AFF et Figé.

Dès que la date de facturation dépasse le mois en cours, seul Ch Aff s'incrémente.

Lors de la scrutation de l'onglet "Factures", si M = 2 (février) est ÉGAL au "mois (mmm) de la date de paiement (février = 2), Ch Aff et Montant Figé s'incrémente de la valeur (offset 136).

Si la facture est payée en Avril ( M date de paiement=4), et date de visite en février(M=2) ou mars(M=3) , alors

Ch d'AFF s'augmente et Montant figé ne bouge plus.

j’espère t'avoir donné toutes les explications nécessaires.

Et oui ... 6heures de décalage ! Bonne nuit ou bon matin

Guy

Bonjour,

6 heures ? Où donc es-tu ?

La macro avait dû être quelque peu mastiquée... Le résultat y était à la fin, mais on multipliait les calculs dans la boucle...

La partie surlignée correspond au prélèvement du montant actu.

    For Each Cel In WsS.Range("B3:B" & DerLigS)
        If Year(Cel.Offset(, 12)) = 2015 Then
            'On détermine le mois
            M = Month(Cel.Offset(, 12))
            'On effectue le cumul
            Select Case UCase(Cel.Value)
                Case "OLI": Cumul_P(M, 1) = Cumul_P(M, 1) + Cel.Offset(, 26).Value
                Case "LAUR": Cumul_P(M, 2) = Cumul_P(M, 2) + Cel.Offset(, 26).Value
            End Select
            Select Case UCase(Cel.Value)
                Case "OLI": Cumul_P_htva(M, 1) = Cumul_P_htva(M, 1) + Cel.Offset(, 129).Value
                Case "LAUR": Cumul_P_htva(M, 2) = Cumul_P_htva(M, 2) + Cel.Offset(, 129).Value
            End Select
            'Si facture payée après le mois de facturation, montant cumulé en actualisation
            If Cel.Offset(, 22) > 0 And Month(Cel.Offset(, 22)) <> M Then Cumul_Montant_ACTU(M, 1) _
             = Cumul_Montant_ACTU(M, 1) + Cel.Offset(, 129).Value
        End If
    Next Cel

    For M = 1 To 12
    'Chiffre d'affaire mensuel
        Cumul_Ch_Aff_Mensuel(M, 1) = Cumul_P_htva(M, 1) + Cumul_P_htva(M, 2)
    'Montant_Figé
        Cumul_Montant_FIGE(M, 1) = Cumul_Ch_Aff_Mensuel(M, 1) - Cumul_Montant_ACTU(M, 1)
    Next M

    'Copie des cumuls dans la feuille "Tableau recap"
        WsC.Range("I4:J15") = Cumul_P                  'Nombre de P
        WsC.Range("K4:L15") = Cumul_P_htva              'Revenu des P 'Nombre de P
        WsC.Range("R4:R15") = Cumul_Ch_Aff_Mensuel      'Chiffre d'affaire mensuel
        WsC.Range("S4:S15") = Cumul_Montant_FIGE        'Montant FIGÉ
        WsC.Range("T4:T15") = Cumul_Montant_ACTU        'MONTANT_ACTUALISÉ

    'Totaux
        WsC.Range("K17") = Application.Sum(WsC.Range("K4").Resize(12))
        WsC.Range("L17") = Application.Sum(WsC.Range("L4").Resize(12))
        'Chiffre d'affaire mensuel
        WsC.Range("R17") = Application.Sum(WsC.Range("R4").Resize(12))
        'Montant_Figé
        WsC.Range("S17") = Application.Sum(WsC.Range("R4").Resize(12))
        'Montant Actualisé
        WsC.Range("T17") = Application.Sum(WsC.Range("T4").Resize(12))

    'Réactivation de la mise à jour de l'écran

Et j'ai donc limité la boucle sur facture aux prélèvements de chiffres d'affaire et du montant actualisé.

Suit une boucle sur les mois de 1 à 12 pour mettre à jour les autres valeurs : chiffre d'affaire mensuel global, et montant figé (puisqu'on dispose du montant actualisé).

Vient l'affectation des résultats (qui explique pourquoi la dimension 1 to 1, [je n'avais pas lu jusque là la première fois])

Et enfin, les totaux une fois, mais la bonne (plutôt que les refaire à chaque ligne de Factures).

Cordialement.


Il y a toutefois un petit problème qui me chiffonne : c'est qu'une facture impayée va apparaître dans le montant figé !

En effet, on ne déterminait le montant des factures payées, on le déduisait du chiffre d'affaire en en ôtant le montant actu.

En prélevant le montant actu. qu'on ignorait alors, je n'ai fait qu'inverser l'opération...

Mais il me semblerait logique qu'on prélève le montant figé à partir des factures payées (dans le mois), la différence entre chiffre d'affaire et montant figé + montant actu étant alors les impayés.

J'attends ton avis sur la question avant de modifier ce point.

Bonjour MFerrand

Bien merci pour cette ligne d'instruction qui fait le bonheur de la valeur Cumul_Montant_FIGE(M, 1)

If Cel.Offset(, 22) > 0 And Month(Cel.Offset(, 22)) <> M Then Cumul_Montant_ACTU(M, 1) _

= Cumul_Montant_ACTU(M, 1) + Cel.Offset(, 129).Value

J'aime aussi comment tu as restructuré

Le programme réel est beaucoup plus volumineux mais le principe reste le même :

Balayage de l'onglet facture

Traitement conditionnel

Affichage.

Pour revenir :

Il y a toutefois un petit problème qui me chiffonne : c'est qu'une facture impayée va apparaître dans le montant figé !

En réalité, à ce stade du pgm ces montants représentent des chiffres d'affaires de vente payées ou non.

Plus loin, (je ne l'ai pas inclus dans le fichier attaché car beaucoup trop gros et pas utile) il y a un traitement conditionnel spécifique aux factures payées.

Mais il me semblerait logique qu'on prélève le montant figé à partir des factures payées (dans le mois), la différence entre chiffre d'affaire et montant figé + montant actu étant alors les impayés.

En fin de compte, montant_figé fin de mois, deviendrait le reflet réel des factures payées durant ce mois et non plus le ch d'affaire.

C'est logique ....

Si ça ne te demande pas trop de temps, oui tu peux faire la modif.

Tu dois savoir que tu m'as deja beaucoup aidé .

J'ai encore d'autres questionnements ...

Merci

Guy

Bonjour MFerrand, le Forum,

Un grand merci pour ton aide.

Je me suis basé sur ta proposition pour le calcul des impayés.

Je continue ma programmation.

A bientôt

Guy

Pour MFerrand et celles et ceux qui veulent s'en inspier

j'ai attaché le fichier modifié.

Voilà la macro modifiée pour prélever à la source montant figé et actualisation.

Cordialement.

Merci MFerrand,

C'est exactement cela que je voulais faire

Ta condition avec le If Then else répond a

Si on est dans le mois en cours; le paiement va dans Montant_FIGÉ

Si le paiement est dans le ou les mois suivant : le paiement va dans Montant_ACTUALISÉ

Je continue

Guy

C'est ça ! Bonne suite.

J'ai posté un autre message intitulé "Problème de division par zéro" .

Le fichier (pratiquement égal au tient est inclus dans le message.

Si ça te tente de participer à la solution.

Un grand merci en tout cas pour ton aide

A+

Guy

Rechercher des sujets similaires à "valeur figee mois"