Domaines
RH
Juridique
Compta
Administratif/Moyens Généraux
Communication
Bureautique
Conseils aux débutants
Word
Excel
PowerPoint
Outlook
Access
Publisher
Windows/système
Applications pas à pas
Tests logiciels
Macros VBA
Leçons
Macros Word
Macros Excel
Astuces
Orthographe
Rédaction
Organisation
 
Outils
Ouvrages
Modèles
Macros
 
Anglais
Grammaire avec AnglaisFacile
Leçon gratuite avec AnglaisFacile
Carrière
Gestion de carrière
Fiches métier
Témoignages / vécu
 
 

Echanger

Forums

© Nadège Guilbert
Le contenu de ce site
est régulièrement déposé auprès de la SGDL
Reproduction interdite
sans le consentement
écrit de l'auteur


Imprimer la page

Macros > Excel

25-Mar-2004

 

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 :

  • Aucun