|
Pour commencer...
Autres exemples de fonctions personnalisées | Créer une fonction personnalisée Pour terminer, je vous propose quelques autres exemples de fonctions. La première ? Pour les nostalgiques, la première convertira un montant en Euros en Francs : Function Francs(MontantEuros) Francs = MontantEuros * 6.55957 End Function Pour la dernière, je vous propose une fonction qui calcule une date d'échéance en fonction de 3 paramètres : la date de début, une durée, une cadence. - Duree est le nombre à ajouter à dateDebut ;
- Cadence accepte les paramètres suivants : "j" pour Jours, "m" pour Mois, "a" pour Année, "t" pour Trimestre et "s" pour Semaine.
Ainsi, si vous désirez ajouter 60 jours à une date, il vous suffit de saisir =Echeance("22/03/04",60,"j") pour calculer instantanément l'échéance (: Function Echeance(dateDebut, duree, cadence) dateDebut = CVDate(dateDebut) Select Case UCase(cadence) Case "J" Echeance = DateAdd("d", duree, dateDebut) Case "M" Echeance = DateAdd("m", duree, dateDebut) Case "A" Echeance = DateAdd("yyyy", duree, dateDebut) Case "T" Echeance = DateAdd("q", duree, dateDebut) Case "S" Echeance = DateAdd("ww", duree, dateDebut) End Select End Function Remarques importantes : la date doit être saisie entre guillemets. Vous pouvez également faire référence à une cellule de votre tableau. Pensez à appliquer un format date au résultat de votre formule ! On constate ici la puissance des fonctions personnalisées qui permettent d'utiliser des formules de test (select case). Il faut bien sûr maîtriser la programmation VBA pour obtenir ce résultat. Pour terminer, je vous propose une autre fonction qui vous sera sans doute d'une plus grande utilité. Reglement(dateDebut, Duree, FinMois, Le) permet de calculer des délais de règlements. Voici tout d'abord le code :
Function Reglement(dateDebut, duree, finMois,
Le)
Le = CInt(Le)
dateDebut = CVDate(dateDebut)
Select Case UCase(finMois)
Case "O"
NbreJourMois = Day(DateSerial(Year(dateDebut), Month(dateDebut)
+ 1, 0))
newdate = DateSerial(Year(dateDebut), Month(dateDebut),
NbreJourMois)
Reglement = DateAdd("m", duree / 30, newdate)
If Month(dateDebut) = 2 Then
NbreJourMois
= Day(DateSerial(Year(Reglement), Month(Reglement) + 1, 0))
Reglement
= DateSerial(Year(Reglement), Month(Reglement), NbreJourMois)
End If
Reglement = DateAdd("d", Le,
Reglement)
Case Else
Reglement = DateAdd("d", duree, dateDebut)
End Select
End Function
Concrètement, voici les paramètres attendus : dateDebut : la date de départ pour le calcul ; duree : le nombre de jours à courir (ex : 30 pour trente jours) ; FinMois : "o" pour oui (factures à x jours fin de mois), "n" pour non (les factures à x jours nets). Le : quantième du jour dans le mois (par exemple : 15 pour fin de mois le 15, 10 pour fin de mois le 10, 0 pour les jours nets). Exemples : - voici les paramètres pour un règlement à 60 jours nets : Reglement("15/1/04", 60, "n", 0) ;
- et pour 30 jours fin de mois le 10 : Reglement("15/1/04", 30, "o", 10).
Haut
|
Niveau
Versions : toutes Pré-requis : |