Microsoft 365 Renvoyer date selon conditions

hamphilos

XLDnaute Nouveau
Bonjour,

Je souhaite faire un tableau synthèse (celui à gauche) à partir d'une liste de paiements (tableau à droite). Le tableau synthèse devra indiquer pour chaque no. de compte la dernière date à laquelle le solde du compte a atteint le seuil de 50 000$ (voir ci-dessous).
  • Pour A-0001 par exemple, comme le premier paiement est de 50 000$, la date souhaitée est le 2021-07-21
  • Pour A-0002, le solde du compte a atteint le seuil de 50 000$ le 2022-01-10
  • Pour A-0003, le solde a atteint le seuil une première fois le 2020-08-02, puis il y a eu un débit. Le 2020-08-04 le solde a atteint le seuil une seconde fois, c'est cette date qui est souhaitée.
On suppose ici que la liste des no. de compte est connue, le but est de constituer la colonne Date.

Toute aide de votre part serait très appréciée. Merci d'avance!

1662604686027.png

 

Pièces jointes

  • Date selon conditions.xlsx
    10.4 KB · Affichages: 7

Wayki

XLDnaute Impliqué
Bonjour,
Ci-joint ma proposition,
Je pense qu'il y a une erreur dans votre exemple.
Vous montrez pour le a-0002 que la dernière fois qu'il a atteint le seuil est le 01/10, alors qu'il le dépasse le 01/11, comme dans votre exemple avec le A-0003 (s'il le dépasse, il l'a au préalable atteint, non ?)
On ne peut pas mixer les valeurs hors vba, c'est soit toutes les plus petites répondant à des conditions, soit toutes les plus grandes répondant à des conditions.
A +
 

Pièces jointes

  • Date selon conditions.xlsx
    11.1 KB · Affichages: 5

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Pour ce que j'en ai compris, une fonction VBA personnalisée:
=DerSeuil (NumCompte, plage As Range, seuil) où:
  • NumCompte est le numéro de compte à considérer
  • plage est la base de données
  • seuil est le seuil à prendre en compte
Voir formule en D7 à recopier vers le bas.

nb : la base de données n'a pas besoin d'être triée.

Le code est dans module1:
VB:
Function DerSeuil(NumCompte, plage As Range, seuil)
Dim t, n&, i&, ech, aux
   t = plage.Value: DerSeuil = ""   'lecture des valeurs de la plage des données
   'tasser en haut de colonne A les dates qui sont concernées (N° compte et seuil)
   For i = 1 To UBound(t)
      If t(i, 1) = NumCompte And t(i, 4) >= seuil Then n = n + 1: t(n, 1) = t(i, 2)
   Next i
   If n = 0 Then Exit Function
   'tri de la colonne A du tableau entre les lignes 1 et n
   Do
      ech = False
      For i = 1 To n - 1
         If t(i + 1, 1) < t(i, 1) Then ech = True: aux = t(i, 1): t(i, 1) = t(i + 1, 1): t(i + 1, 1) = aux
      Next i
   Loop Until Not ech
   'en remontant depuis la ligne n, on retient la première date rencontrée de la ligne i
   'seulement si elle est différente de la date de la ligne (i-1) incrémentée de 1
   For i = n To 2 Step -1
      If t(i, 1) <> t(i - 1, 1) + 1 Then DerSeuil = t(i, 1): Exit Function
   Next i
   DerSeuil = t(1, 1)
End Function
 

Pièces jointes

  • hamphilos- Date selon conditions- v2.xlsm
    19.1 KB · Affichages: 3
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505