Problème échéancier - répartition conditionnelle de facturation

  • Initiateur de la discussion Initiateur de la discussion Dak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dak

XLDnaute Nouveau
Bonjour à tous,

Tout d’abord merci à tous ceux qui prendront le temps de me lire voir d’apporter une réponse.
Après avoir recherché quelque peu sur le forum, je n’ai pas trouvé la solution à mon problème, que je vous expose donc.

Pour réaliser un suivi de budget d’un montant « m », j’essaye de répartir des facturations en fonction de la durée « d » de ma commande.

J’aborde le problème avec le trio « SI / ET / OU » en faisant des tests sur la date (mois-année) de la colonne sélectionnée et en la comparant avec les dates de début et fin de la commande, ce qui m’amène à une formule indigeste avec beaucoup d’imbrications.

Voici ce que je tente de faire :

• Si d <= 3 mois : 1 seule facturation
o Mois de facturation : dernier mois de la commande
o Montant facture = m
Sinon
• Si 3<d<=6 mois : 2 facturations
o Mois de facturation : dernier mois de la commande et 3 mois avant.
o Montant factures = m/2

• Si 6<d<=9 mois : 3 facturations
o Mois de facturation : dernier mois de la commande, 3 mois avant et 6 mois avant
o Montant factures = m/3
Sinon
• Si 9<d<=12 mois : 4 facturations
o Mois de facturation : dernier mois de la commande, 3, 6 et 9 mois avant
o Montant factures = m/4
Sinon
• Si d >12 mois : x facturations
o Mois de facturation : dernier mois de la commande et tous les 6 mois en remontant (en restant dans la période d’ouverture de la commande). Je n’arrive pas à écrire ce dernier cas
o Montant factures = m/ ? (dépend du nbr de facturation identifiée)



J’aborde le problème avec le trio « SI / ET / OU » en faisant des tests sur la date (mois-année) de la colonne, ce qui m’amène à une formule indigeste avec beaucoup d’imbrications.

La dernière formule (cellule K4) sur laquelle je travaille, et que je souhaite étendre à toutes les cellules en gris clair, retourne une erreur que je n’arrive pas à analyser. Je souhaiterai savoir si c’est un problème de syntaxe ou un trop grand nombre de fonctions imbriquées ou autre chose ?
Puis-je m’en sortir avec ce type de construction ou faut-il adopter une autre approche plus « fine » ?

Je pense qu’un fichier exemple est indispensable. J’ai essayé d’être clair mais dites moi s’il y a des zones d’ombres.

Dans mes recherches, j’ai « découvert » les fonctions ‘datedif’, ‘recherchev’, ‘rechercheh’ mais je ne les maitrise pas, pourraient-elles m’aider pour ce problème ?
 

Pièces jointes

Re : Problème échéancier - répartition conditionnelle de facturation

Je propose cette fonction perso:
VB:
Function Facturé(ByVal DatCol As Date, ByVal DatDéb As Date, ByVal DatFin As Date, ByVal STot As Double) As Double
Dim MoisDéb As Long, MoisFin As Long, MoisCol As Long, NbTrim As Long, NbAnné As Long
MoisFin = Year(DatFin) * 12 + Month(DatFin)
MoisDéb = Year(DatDéb) * 12 + Month(DatDéb)
MoisCol = Year(DatCol) * 12 + Month(DatCol)
Facturé = 0
If MoisCol < MoisDéb Then Exit Function
If MoisCol > MoisFin Then Exit Function
NbTrim = (MoisFin - MoisDéb) \ 3 + 1
If NbTrim <= 4 Then
   If (MoisFin - MoisCol) Mod 3 = 0 Then Facturé = STot / NbTrim
Else
   NbAnné = (NbTrim + 3) \ 4
   If (MoisFin - MoisCol) Mod 12 = 0 Then Facturé = STot / NbAnné
   End If
End Function
Exemple d'utilisation:
Code:
=Facturé(K$2;$I6;$J6;$H5)
Testez la bien dans tous les sens, examinez les résultats à la loupe.

P.S. Il manquait un End If. Je ne sais comment il s'est fait la valise d'autant que j'avais testé la fonction auparavant.
À+
 
Dernière édition:
Re : Problème échéancier - répartition conditionnelle de facturation

Bonjour à tous,

Je relance ce sujet car j'aimerai apporter des modifications à la solution gentiment proposée par Dranreb mais mon niveau en VBA ne me le permet pas...

A savoir :
- si une facturation tombe le mois d'ouverture de la commande ou le mois suivant : la reporter au mois m+2 (exemple : si démarrage en janvier: rien en janvier, rien en février, 1ère échéance en Mars)
- si une facturation tombe au 4ème trimestre(octobre, novembre ou décembre) : la reporter au mois de Janvier suivant
Si le report tombe un mois où une facturation est déjà prévue, cumuler les montants.

Toute aide est la bienvenue,
Merci d'avance !

PS: pour rappel le fichier exemple est dans mon 1er mail en haut de page.
 
Re : Problème échéancier - répartition conditionnelle de facturation

Bonjour.
En ajoutant 2 au mois de début, ça collerait ?
VB:
Function Facturé(ByVal DatCol As Date, ByVal DatDéb As Date, ByVal DatFin As Date, ByVal STot As Double) As Double
Dim MoisDéb As Long, MoisFin As Long, MoisCol As Long, NbTrim As Long, NbAnné As Long
MoisFin = Year(DatFin) * 12 + Month(DatFin)
MoisDéb = Year(DatDéb) * 12 + Month(DatDéb) + 2: If MoisDéb > MoisFin Then MoisDéb = MoisFin
MoisCol = Year(DatCol) * 12 + Month(DatCol)
Facturé = 0
If MoisCol < MoisDéb Then Exit Function
If MoisCol > MoisFin Then Exit Function
NbTrim = (MoisFin - MoisDéb) \ 3 + 1
If NbTrim <= 4 Then
   If (MoisFin - MoisCol) Mod 3 = 0 Then Facturé = STot / NbTrim
Else
   NbAnné = (NbTrim + 3) \ 4
   If (MoisFin - MoisCol) Mod 12 = 0 Then Facturé = STot / NbAnné
   End If
End Function
À +
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
789
Réponses
10
Affichages
708
Réponses
5
Affichages
324
Réponses
3
Affichages
465
Réponses
3
Affichages
438
Retour