vba : report de montants selon echéance

miguelangelo

XLDnaute Occasionnel
Bonjour à tous,

Ca va faire bien 2 jours que je buche dessus. je n'y arrive pas.

Mon soucis : (dans le tableau joint)

j'ai un tableau simplifié dans lequel j'ai :
un iD mouvement (numéro unique)
un numéro de facture
ttc fact : montant d'origine
ttc imp : solde du au 31/12/2008
amount applied : somme de reglements percus sur la facture depuis le 1/1/2009
jours aprés echeance : date de reception du reglement - date d'échéance (s'il y a plusieurs jours d'échéance cela veut dire que c'est soir un prelevement, soit plusieuers echeances).

Mon souci se pose à partir de la colonne AU
j'ai besoin en fait d'avoir la somme des règlements percus (sur la facture) sur des delai inferieurs à 30, 60, 90 jours....

Donc, si j'ai une facture dont le délai de règlement est intervenu à 25 jours que le montant du reglement soit sommer avec tous les règlements intervenus à - de 30 jours (cellule au1)

le fichier d'origine compte jusqu'à 30000 lignes ...

merci pour votre aide.
 

Pièces jointes

  • test.xls
    19.5 KB · Affichages: 71
  • test.xls
    19.5 KB · Affichages: 73
  • test.xls
    19.5 KB · Affichages: 68

sousou

XLDnaute Barbatruc
Re : vba : report de montants selon echéance

Bonjour miguelangelo

Pas certain d'avoir bien compris, car je n'obtient pas le résultat qu tu proposes, mais je te propose une solution via un fonction personalisé
Ici la fonction fait dans une zone organisée, (réglement, jour,réglement,jour,......)
la somme des règlement effectués entre valeur et valeur1

=masomme(zone,valeur,valeur1)

Regarde si cela peu t'aider
 

Pièces jointes

  • test(1).xls
    29 KB · Affichages: 78
  • test(1).xls
    29 KB · Affichages: 79
  • test(1).xls
    29 KB · Affichages: 81

sousou

XLDnaute Barbatruc
Re : vba : report de montants selon echéance

Bien je vais essayer ci dessous.
La fonction en au3 par exemple.
la zone va de e3 à as3
la valeur minimale est en at1 (0) la valeur maximale en au1 (30)
=masomme($E3:$AS3;AT$1;AU$1)

La fonction ci dessous regarde toutes les valeurs de la zone par pas de deux
- (for i= 1 to n step2)
la première valeur est le règlement, la suivante est le nombre de jour après échéance
- Réglement=cdbl(zone(i)
- jour=cdbl(zone(i+1)

Si le nombre de jour est compris entre la valeur min et la valeur max ici 0 et 30
alors je somme cette cellule et je passe à la paire suivante.

Tu n'as plus qu'à recopier ta formule comme avec une formule classique en prenant bien soin de placer correctement les $


Function masomme(zone, valeurmin, valeurmax)
n = zone.Count
For i = 1 To n Step 2
règlement = CDbl(zone(i))
jour = CDbl(zone(i + 1))
If jour > valeurmin And jour < valeurmax Then

masomme = masomme + règlement
End If
Next

End Function
 

miguelangelo

XLDnaute Occasionnel
Re : vba : report de montants selon echéance

merci bcp, ca marche très bien

tu me fais découvrir un nouveau monde là
la creation de ses propres formules...

penses tu qu'il soit possible de mettre cette formule de facon permanente. (pour pls autres fichiers) ?
 

sousou

XLDnaute Barbatruc
Re : vba : report de montants selon echéance

C'est possible.

tu fabriques un fichier que tu appels par exemple mesfonction
Dans ce fichier tu fabrique toutes les fonctions que tu veux,
Et enregistre le fichier sous Xla.
Une fois cel fait tu installe tion fichier dans excel au travers du menu
Outil/Macrocomplémentaires
 

Statistiques des forums

Discussions
299 930
Messages
1 980 158
Membres
207 009
dernier inscrit
Cartereau