Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction personnalisée date

4 réponses
Avatar
Boursicot
Bonjour à tous,

je voudrais remplacer la fonction mois.decaler =MOIS.DECALER(D7;C8) par une
fonction personnalisee batie sur le modele suivant :

=DATE(ANNEE(D7);MOIS(D7)+C8;JOUR(D7)) , ceci afin d'eviter d'utiliser la
macro complementaire d'analyse qui est necessaire pour que mois.decaler
fonctionne

mais j'ai un peu de mal dans l'ecriture de la fonction personnalisee :

Function moisdecale(dat, decalage)
Application.Volatile True
moisdecale = Application.WorksheetFunction.Date(Year(dat), Month(dat) +
decalage, Day(dat))
End Function

ne fonctionne pas Que faut il que je modifie ?

merci par avance

Boursicot

4 réponses

Avatar
Daniel
Bonsoir.
Mets "DateSerial" à la place de "Date". "Date" utilisée sans argument donne
la date du système.
Cordialement.
Daniel
"Boursicot" a écrit dans le message de news:
44f35d67$0$11814$
Bonjour à tous,

je voudrais remplacer la fonction mois.decaler =MOIS.DECALER(D7;C8) par
une fonction personnalisee batie sur le modele suivant :

ÚTE(ANNEE(D7);MOIS(D7)+C8;JOUR(D7)) , ceci afin d'eviter d'utiliser la
macro complementaire d'analyse qui est necessaire pour que mois.decaler
fonctionne

mais j'ai un peu de mal dans l'ecriture de la fonction personnalisee :

Function moisdecale(dat, decalage)
Application.Volatile True
moisdecale = Application.WorksheetFunction.Date(Year(dat), Month(dat) +
decalage, Day(dat))
End Function

ne fonctionne pas Que faut il que je modifie ?

merci par avance

Boursicot



Avatar
AV
Bien que dans le cas présent, l'utilisation de DateSerial suffise
amplement et soit plus simple de maiement, si tu veux utiliser les fonctions de
feuille de calcul, passe par la fonction Evaluate

Function moisdecale(dat, decalage)
Application.Volatile True: dat = dat * 1
moisdecale = Evaluate("date(year(" & dat & "), Month(" & dat & ") + " &
decalage & ", Day(" & dat & "))")
End Function

ou

Function moisdecale(dat, decalage)
Application.Volatile True
moisdecale= DateSerial(Year(dat), Month(dat) + decalage, Day(dat))
End Function

AV
Avatar
JB
Bonsoir,

Si la fonction perso est recopiée x1000, le temps de recalcul n'est
pas négligeable(7 s pour 10.000) alors qu'avec
ÚTE(ANNEE(A1);MOIS(A1)+decal;JOUR(A1)), le temps de recalcul n'est
pas mesurable.

JB


Bonjour à tous,

je voudrais remplacer la fonction mois.decaler =MOIS.DECALER(D7;C8) par une
fonction personnalisee batie sur le modele suivant :

ÚTE(ANNEE(D7);MOIS(D7)+C8;JOUR(D7)) , ceci afin d'eviter d'utiliser la
macro complementaire d'analyse qui est necessaire pour que mois.decaler
fonctionne

mais j'ai un peu de mal dans l'ecriture de la fonction personnalisee :

Function moisdecale(dat, decalage)
Application.Volatile True
moisdecale = Application.WorksheetFunction.Date(Year(dat), Month(dat) +
decalage, Day(dat))
End Function

ne fonctionne pas Que faut il que je modifie ?

merci par avance

Boursicot


Avatar
Boursicot
Merci à tous les piliers (daniel , av et jb ) du forum excel toujours aussi
efficaces.

Pour JB en fait je veux faire une substitution dans un tableau deja existant
ou la fonction est utilisee 200 ou 300 fois. Le remplacement par une
fonction personnalisee me permet de simplifier ma modification mais c'est
vrai que le temps de calcul risque d'etre un peu long.

Merci encore.




"Boursicot" a écrit dans le message de news:
44f35d67$0$11814$
Bonjour à tous,

je voudrais remplacer la fonction mois.decaler =MOIS.DECALER(D7;C8) par
une fonction personnalisee batie sur le modele suivant :

ÚTE(ANNEE(D7);MOIS(D7)+C8;JOUR(D7)) , ceci afin d'eviter d'utiliser la
macro complementaire d'analyse qui est necessaire pour que mois.decaler
fonctionne

mais j'ai un peu de mal dans l'ecriture de la fonction personnalisee :

Function moisdecale(dat, decalage)
Application.Volatile True
moisdecale = Application.WorksheetFunction.Date(Year(dat), Month(dat) +
decalage, Day(dat))
End Function

ne fonctionne pas Que faut il que je modifie ?

merci par avance

Boursicot