Calcul échéance suivant

Bonsoir,

J'ai un tableau de bord pour le suivi de mes chantier et notamment leur règlement. Ci-joint un extrait du tableau.

La colonne "M", correspond à la date prévue du règlement d'un chantier. Elle se calcule suivant ce qui est inscrit dans la colonne "L", (type d'échéance). Je souhaiterais que la colonne "M" se calcule toute seule.

Mes échéances :

  • 1 mois fin de mois
  • 2 mois
  • 2 mois 10 du mois fin de mois avec une particularité :
- si la date de la facture est avant le 10 du mois alors il faut prendre comme échéance : 2 mois fin de mois

- si la date de la facture est après le 10 du mois il faut prendre comme échéance 3 mois fin de mois.

  • 3 semaines
  • 45 jours
  • 45 jours fin de mois.

J'ai trouvé deux formules qui me permettent de remplir tous mes différents cas. Pour ces formules, je dois ajouter une colonne "nombre de jours".

Les formules trouvées :

- pour les échéances avec une notion de fin de mois :

=FIN.MOIS(MOIS.DECALER(CelluleDateFacture;CelluleNombreJours/30)+MOD(CelluleNombreJours;30);0)

- pour les échéances sans la notion de fin de mois :

=MOIS.DECALER(CelluleDateFacture;CelluleNombreJours/30)+MOD(CelluleNombreJours;30)

Mais afin d'éviter les erreurs, je ne souhaite pas à chaque fois "copier-coller" la bonne formule suivant ce qui est écrit dans la colonne "L".

Je souhaiterais une formule qui puisse prendre en compte tous les cas de figure.

Je ne suis pas contre le fait de rajouter des colonnes ou des feuilles de calcul du moment que cette colonne se remplisse toute seule !

Merci pour votre aide.

461formules.xlsx (9.80 Ko)

Bonsoir le forum,

Voir le fichier joint.

709echeances.xlsx (10.54 Ko)

Re,

M10 : remplacer par :

=DATE(ANNEE(K10);MOIS(K10)+2;1)+15-1

bonsoir mbbp,

merci mais je souhaitais avoir la même formule (genre "=si") pour toutes les cellules de la colonne "PREVU" :

=si ( Cellule Echeance = 1 mois fin de mois alors faire tel calcul ou si la Cellule écheance = 2 mois alors faire tel calcul, etc....

mais je ne sais pas comment la "monter"

M6 : remplacer par :

=SI(JOUR(K6)<10;MOIS.DECALER(K6;2);DATE(ANNEE(K6);MOIS(K6)+3;10))

A tirer vers le bas.

et une même formule pour toutes les lignes car mon tableau fait plus de 200 lignes!

est-ce possible?

72formules.xlsx (9.80 Ko)

Bonsoir,

Compte-tenu de la diversité de tes échéances (et aussi de la longueur de leur désigantion, pour éviter une formule qui va être un peu longue , j'opterais pour ma part pour une fonction personnalisée.

Function DATEECH(dFact As Date, Ech As String)
    Dim TEch, dEch As Date, TypEch%
    Application.Volatile
    TEch = Split("1 MOIS FIN DE MOIS;2 MOIS;2 MOIS 10 DU MOIS FIN DE MOIS;" _
     & "3 SEMAINES;45 JOURS;45 JOURS FIN DE MOIS", ";")
    On Error Resume Next
    TypEch = WorksheetFunction.Match(Ech, TEch, 0)
    If Err.Number <> 0 Then
        DATEECH = CVErr(xlErrNA): Exit Function
    End If
    On Error GoTo 0
    Select Case TypEch
        Case 1 To 3
            dEch = DateAdd("m", TypEch + (Day(dFact) <= 10 And TypEch = 3), dFact)
        Case 4 To 6
            dEch = DateAdd("d", IIf(TypEch = 4, 21, 45), dFact)
    End Select
    Select Case TypEch
        Case 1, 3, 6
            dEch = DateSerial(Year(dEch), Month(dEch) + 1, 1) - 1
    End Select
    DATEECH = dEch
End Function

Les arguments en sont la date de facture et l'échéance. Elle s'utilise comme les fonctions natives d'Excel.

=DATEECH(K4;L4)

Cordialement.

super, une seule formule !

merci MFerrand.

par contre, comment est-ce que je l'intègre dans mon tableau de bord d'origine, car j'avais juste mis une partie du tableau, dans un autre fichier?

Le code de la macro est dans Module1. Tu accèdes à l'éditeur VBA par Alt+F11 dans toutes les versions d'Excel.

Tu copies le code et tu le colles dans un Module standard de ton classeur. Pour créer un module, dans l'éditeur, menu Insertion > Module.

Vérifie aussi que les calculs correspondent... Je ne suis pas à l'abri d'une erreur d'interprétation !

Cordialement.

Bonjour MFerrand,

[quote="dans ton post de 00:15, tu"]j'opterais pour ma part pour une fonction personnalisée.[/quote]

une fonction personnalisée ? en VBA, alors ? pas glop, pas glop, malheureux ! jmd m'a soufflé qu'ça, y'en a être tabou et sacrilège ! le Tout-Puissant Power BI a dit : « tu n'adoreras pas d'autre D. que moi ; je suis seul et Unique. » ; c'est écrit dans les Saintes Écritures de la Bible Microsoft (release 98.6.002, alinéa b ; mise à jour KB7842315 pour les systèmes basés sur x64).

(mais moi aussi, j'suis pas à l'abri d'une erreur d'interprétation)

dhany

C'est bien Microsoft qui fait en sorte que les fonctions personnalisées fonctionnent comme les autres !

Par contre ne me parle pas de mises à jour, j'en ai une série en attente, et il faut être de plus en plus vigilant, une mise à jour masquée n'est pas censée revenir... il y en a notamment une que je viens de remasquer pour la plus de 10e fois ! Une autre, dont en allant voir les infos complémentaires, tu constates la présence d'une liste particulièrement longue de problèmes qu'elle risque de provoquer, pour lesquels Microsoft espère trouver rapidement des solutions, mais il la poussent quand même à installer...

Plus d'écho de Valmatmax ?

il était pas encore prêt pour rencontrer Power Bi...

bonsoir dhany et MFerrand,

je ne vous avais pas oublié !

c'est juste que j'ai pas mal été sur des chantiers et en plus je pars en vacances bientôt donc c'est la course pour être à jour!

je vous avoue, qu'en effet, je ne suis pas encore prêt pour rencontrer Power Bi !

je m'y met aujourd'hui, promis et je vous tiens au courant..

Mais en dehors de Power BI, qu'en est-il du problème initial que tu a soumis ?

Heu...comment dire....je dois être un chèvre ou alors en surmenage vivement les vacances !

j'ai mis mon fichier excel ci-joint pour vous montrer le tableau en entier...(onglet 2018 à prendre en compte)

je ne me souviens plus si pour la formule je vous avais dit la nuance pour l'échéance "2 mois 10 du mois fin de mois" : si la date de la facture est avant le 10, il y a que "2 mois fin de mois" comme échéance alors que si la date de la facture est au delà du 10, alors c'est "3 mois fin de mois "qu'il faut prendre en compte

à y être est-ce que vous pensez qu'l serait possible d'avoir un message qui s'affiche genre "à relancer" dans la colonne "a relancer" quand la date d'échéance est dépassée?

encore merci pour tous vos conseils et aide.

Si je me souviens bien, je t'ai fourni une fonction personnalisée pour faire ces calculs. J'attends donc que tu me dises si, après l'avoir testée elle répond à tes attentes, ou bien si elle n'y répond pas et alors en précisant en quoi !

Tu remets un fichier xlsx, qui de ce fait ne peut contenir de code VBA, donc pas la fonction fournie. Faut-il donc en conclure que tu ne l'as pas testée ? Alors que pour ma part je t'ai retourné le fichier modèle que tu avais soumis avec la fonction.

Un message d'alerte est une autre question, qui attendra que le calcul de la date d'échéance soit définitivement reglé.

Bonjour à toutes et tous,

Une proposition par formule avec prise en compte des nouveaux éléments du dernier fichier, a savoir Échéance:

TOUT DE SUITE

1 SEMAINE

1 MOIS

15 JOURS

En "M4"

=SI(L4="1 MOIS FIN DE MOIS";FIN.MOIS(K4;1);
SI(L4="2 MOIS";MOIS.DECALER(K4;2);
SI(L4="2 MOIS 10 DU MOIS FIN DE MOIS";SI(JOUR(K4)<=10;FIN.MOIS(MOIS.DECALER(K4;2);0);FIN.MOIS(MOIS.DECALER(K4;3);0));
SI(L4="3 SEMAINES";DATE(ANNEE(K4);MOIS(K4);JOUR(K4)+21);
SI(L4="45 JOURS";DATE(ANNEE(K4);MOIS(K4);JOUR(K4)+45);
SI(L4="45 JOURS FIN DE MOIS";FIN.MOIS(DATE(ANNEE(K4);MOIS(K4);JOUR(K4)+45);0);
SI(L4="TOUT DE SUITE";K4;
SI(L4="1 SEMAINE";DATE(ANNEE(K4);MOIS(K4);JOUR(K4)+7);
SI(L4="1 MOIS";DATE(ANNEE(K4);MOIS(K4)+1;JOUR(K4));
SI(L4="15 JOURS";DATE(ANNEE(K4);MOIS(K4);JOUR(K4)+15);""))))))))))

Tirer vers le bas autant que nécessaire.

Je retombe bien sur les mêmes dates que l'ami MFerrand, que je salut au passage et qui ne manquera pas de modifier son code VBA afin de prendre en compte les nouveaux éléments… où pas

Pour ma part, j'adopte cette Fonction Personnalisée, que j'essayerai de modifier aux autres échéances pour ma culture personnelle… Même si j'ai bien entendu les hurlements pas glop, pas glop, de [b]dhany

[/b]

Cordialement.

Salut mdo100 !

Dhany faisait une référence humoristique à une discussion antérieure...

La fonction peut être complétée bien sûr... mais je voudrais d'abord savoir si valmatmax l'a testée et est en mesure de l'utiliser, surtout qu'il ne s'est pas facilité la tâche avec ses libellés d'échéances longs et sur lesquels une erreur est aisément faisable, sauf à les mettre en liste déroulante. Un codage plus compact aurait certainement été plus sûr, mais en tout cas la balle est dans son camp.

Cordialement.

Bonjour mdo100, le forum,

Tu a écrit :

j'adopte cette Fonction Personnalisée... même si j'ai bien entendu les hurlements pas glop, pas glop, de dhany

d'abord, c'est pas des hurlements vu qu'j'ai écrit en minuscules ; ensuite, et surtout, j'ironisais par rapport à jmd qui détestes VBA ; et MFerrand l'sais très bien car j'faisais allusion à un précédent post que j'lui avais écrit ; moi, au contraire, j'adore VBA !!! et j'ai absolument rien contre si tu utilises une fonction personnalisée VBA ! j'te dis même bravo, et j't'y encourage !

tu seras peut-être intéressé par ce post tout récent que j'viens d'écrire : https://forum.excel-pratique.com/viewtopic.php?p=674394#p674394


ajout pour MFerrand : salut, on s'est croisés ! (tu peux suivre le lien ci-dessus, toi aussi)

dhany

Rechercher des sujets similaires à "calcul echeance suivant"