Microsoft 365 Renvoyer date selon conditions

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 !

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

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

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

Dernière édition:
- 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
4
Affichages
104
Retour