Renvoyer un montant en fonction d'une date (début et fin de mois)

  • Initiateur de la discussion Initiateur de la discussion 13GIBE59
  • 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 !

13GIBE59

XLDnaute Accro
Bonjour le forum.

Dans le fichier joint, je voudrais retrouver le montant correspondant au début et à la fin du mois.
Ça me paraissait simple au départ, ben non, je suis pas formuliste...

Tout est dans la pièce jointe.

Merci d'avance.
 

Pièces jointes

Re : Renvoyer un montant en fonction d'une date (début et fin de mois)

Bonjour

Ci dessous des formules personnalisées qui répondent à la question.
Il faut indiquer la zone avec les dates
La zone avec les montants, la ligne de départ et le nombre de cellules doivent être identique.
Les deux colonnes peuvent ne pas être adjacente.
Le mois considéré.

Code:
Option Explicit

Function PremiereValeurMois(ZoneDate As Range, ZoneMontant As Range, MoisNumerique As Byte) As Currency
Application.Volatile
Dim Cellule As Range
Dim Montant As Currency
Dim Jour As Byte

If ZoneDate.Row <> ZoneMontant.Row Then
    PremiereValeurMois = "Erreur"
    Exit Function
End If
If ZoneDate.Count <> ZoneMontant.Count Then
    PremiereValeurMois = "Erreur"
    Exit Function
End If
PremiereValeurMois = 0
For Each Cellule In ZoneDate
    If IsDate(Cellule) Then
        If Month(Cellule) = MoisNumerique Then
            If Jour = 0 Then
                Jour = Day(Cellule)
                Montant = Cellule.Offset(0, ZoneMontant.Column - Cellule.Column)
            Else
                If Year(Cellule) < Jour Then
                Jour = Day(Cellule)
                Montant = Cellule.Offset(0, ZoneMontant.Column - Cellule.Column)
                End If
            End If
        End If
    End If
Next Cellule

PremiereValeurMois = Montant
End Function
Function DerniereValeurMois(ZoneDate As Range, ZoneMontant As Range, MoisNumerique As Byte)
Dim Cellule As Range
Dim Montant As Currency
Dim Jour As Byte
Application.Volatile
If ZoneDate.Row <> ZoneMontant.Row Then
    DerniereValeurMois = "Erreur"
    Exit Function
End If
If ZoneDate.Count <> ZoneMontant.Count Then
    DerniereValeurMois = "Erreur"
    Exit Function
End If
DerniereValeurMois = 0
For Each Cellule In ZoneDate
    If IsDate(Cellule) Then
        If Month(Cellule) = MoisNumerique Then
            If Jour = 0 Then
                Jour = Day(Cellule)
                Montant = Cellule.Offset(0, ZoneMontant.Column - Cellule.Column)
            Else
                If Year(Cellule) > Jour Then
                Jour = Day(Cellule)
                Montant = Cellule.Offset(0, ZoneMontant.Column - Cellule.Column)
                End If
            End If
        End If
    End If
Next Cellule

DerniereValeurMois = Montant
End Function

A tester

JP
 

Pièces jointes

  • fonction.jpg
    fonction.jpg
    70.6 KB · Affichages: 75
Re : Renvoyer un montant en fonction d'une date (début et fin de mois)

Salut JB 🙂, le forum,

Sous réserve que j'aie bien compris, que les dates soient triées par ordre croissant et à condition que la première date du mois suivant figure en colonne A ... oui, je sais ça fait beaucoup de conditions, mais on adaptera en fonction de ton retour 😛
Code:
=INDEX($B$1:$B$36;EQUIV(MIN(SI(MOIS($A$1:$A$36)=3;$A$1:$A$36));$A$1:$A$36;0))

Code:
=INDEX($B$1:$B$36;EQUIV(MAX(SI(MOIS($A$1:$A$36)=3;$A$1:$A$36))+1;$A$1:$A$36))
... Toutes deux des formules matricielles (valider avec Ctrl+Shift+Enter)

Edit: Salut JP 🙂

Edit2: Modifié la seconde formule (la présence d'une date du mois suivant n'est plus requise)
 
Dernière édition:
Re : Renvoyer un montant en fonction d'une date (début et fin de mois)

Bonjour JP14, Modeste et Modeste geedee. 🙂

Merci à vous trois pour vos contributions. Je me doutais bien qu'il fallait un vieil Index-equiv, mais c'est plus fort que moi, je suis allergique à la compréhension de ce truc 😕 (le plus compliqué que je "maîtrise" est RECHERCHEV).
Note pour JP14 : je garde ton vba parce que c'est génialement fait...
Merci encore.
A bientôt.
 
- 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
10
Affichages
385
Réponses
1
Affichages
345
wDog66
W
Retour