OVH Cloud OVH Cloud

vba : rajouter des jours à une date

11 réponses
Avatar
laurent colledani
bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance

10 réponses

1 2
Avatar
Joël GARBE
Bonsoir,

Sauf si je n'ai pas bien compris la question :

Úte Saisie + 90

Doit convenir, avec la mise en forme adéquat ;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"laurent colledani" a écrit
dans le message de news:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance



Avatar
LeSteph
Bonsoir Laurent,
Selon les mêmes réserves que JG
si c'est à la date où l'on saisit:
=maintenant()+90

lSteph
"laurent colledani" a écrit
dans le message de news:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance



Avatar
Ilan
Bonsoir Laurent,

Il y a une methode VBA qui fait ce que tu demandes :

Fucntion NouvelleDate (DateSaisie as Date) As Date
NouvelleDateÚteAdd("d",90,DateSaisie)
End Function



bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance



Avatar
laurent colledani
merci pour vos réponses
il est vrai que ma question n'était pas claire!
mon pb est le suivant (je l'explique hors contecte réel sinon cela seait
trop long!)

je veux créé une fonctionVBA:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Public Function c(a As Integer, b)
If a = 1 Then
c = b + 15
ElseIf a = 2 Then
c = b + 90
End If
End Function
;;;;;;;;;;;;;;;;;;;
"b" est une date qui est saisie dans l'interface de l'assistant fonction :
ex 01/01/03
"a" est une valeur numérique saisie aussi dans l'interface de l'asssitant
fonction d'excel.
je n'arrive pas à avoir dans ma cellule calculée une date cohérente, c'est à
dire 15 ou 90 jours apres ma date de saisie (j'ai mis b en type date (dim b
as date) mais cela ne change rien)
merci encore pour votre aide



"LeSteph" wrote:

Bonsoir Laurent,
Selon les mêmes réserves que JG
si c'est à la date où l'on saisit:
=maintenant()+90

lSteph
"laurent colledani" a écrit
dans le message de news:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance








Avatar
Joël
Bonsoir Laurent,

On peut essayer cela :

Public Function ChercheDate(a As Integer, b As Date) As Date
If a = 1 Then
ChercheDate = Format(b + 15, "DD/MM/YY")
ElseIf a = 2 Then
ChercheDate = Format(b + 90, "DD/MM/YY")
End If
End Function


--

Bien cordialement,

Joël GARBE
+33 6 60 58 20 68
www.joelgarbe.fr
"laurent colledani" a écrit
dans le message de news:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance



Avatar
LeSteph
Re bonsoir,
la saisie de date dans l'assistant. devra comporter des guillemets
sous peine de division "01/01/04" et non 1/1/4

Pour renvoyer une date depuis vba:

selon ton ex si c contient l'expression date
c=format(c,"dd/mm/yy")

mais c ne va pas ainsi juste un caractère comme nom de fonction
et surtout tu ne prévois pas le cas où a serait différent de 1 ou 2
je te propose donc ceci a=1 pour 15 et autre pour 90, si cela convient
si tu mets autre chose qu'un integr tu aura une erreur , #value
'*********
Public Function coldat(a As Integer, b As Date) As Date

If a = 1 Then
coldat = b + 15
Else
coldat = b + 90
End If
coldat = Format(coldat, "dd,mm,yy")
End Function
'**********
'lSteph
"laurent colledani" a écrit
dans le message de news:

merci pour vos réponses
il est vrai que ma question n'était pas claire!
mon pb est le suivant (je l'explique hors contecte réel sinon cela seait
trop long!)

je veux créé une fonctionVBA:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Public Function c(a As Integer, b)
If a = 1 Then
c = b + 15
ElseIf a = 2 Then
c = b + 90
End If
End Function
;;;;;;;;;;;;;;;;;;;
"b" est une date qui est saisie dans l'interface de l'assistant fonction :
ex 01/01/03
"a" est une valeur numérique saisie aussi dans l'interface de l'asssitant
fonction d'excel.
je n'arrive pas à avoir dans ma cellule calculée une date cohérente, c'est
à
dire 15 ou 90 jours apres ma date de saisie (j'ai mis b en type date (dim
b
as date) mais cela ne change rien)
merci encore pour votre aide



"LeSteph" wrote:

Bonsoir Laurent,
Selon les mêmes réserves que JG
si c'est à la date où l'on saisit:
=maintenant()+90

lSteph
"laurent colledani" a écrit
dans le message de news:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la
bonne
date et au format date

merci d'avance










Avatar
laurent colledani
merci pour vos solutions, elles fonctionnent bien en l'état (à part qu'il ne
faut pas déclarer la variable résultat comme type "date" pour la fonction de
Lesteph).
Mais mon contexte est en fait un peu plus compliqué. Ma date à saisir (b)
est saisie dans un userform, dans un textbox. Or , je ne peux pas ( et il ne
faut pas pour faciliter la saisie du formulaire) mettre des guillemets autour
de la date à saisir.
quand vos fonctions récupèrent la date saisie dans le textbox, elles
comprennent 01/01/01 et non "01/01/01". la conséquence est une date calculée
qui affiche une date systématiquement au xx/xx/00. (toujours l'an 2000),
sinon le calcul fonctionne + ou - bien sur les jours et mois.

je vous donne un extrait du programme:

************ récupération valeur saisie dans le textebox, mise au format
date régional du système avec "cdate", affectation de cette date dans une
cellule dans un tableau (neccesaire pour les futurs utilisateurs),
affectation de la date dans la variable "b" déclarée type "date" ********


dim b as date
Range("j" & num).Value = CDate(uf1.TextBox5.Value)
b = Range("i" & num).Value



********* la fonction cette fois (si complète au niveau des tests)
*****************************************************

Public Function datebutoir(a As Integer, b As Date)
If a = 1 Then
datebutoir = b + 15
ElseIf a = 2 Then
datebutoir = b + 15
ElseIf a = 3 Then
datebutoir = b + 31
ElseIf a = 4 Then
datebutoir = b + 31
ElseIf a = 5 Then
datebutoir = b + 15
ElseIf a = 6 Then
datebutoir = b + 31
Else: datebutoir = b + 90
End If
datebutoir = Format(datebutoir, "dd/mm/yy")
End Function



****affectation de la formule dans une cellule du tableau *****
Range("L" & num).Value = datebutoir(a, b)

encore merci pour votre aide


"laurent colledani" wrote:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance



Avatar
LeSteph
Bonjour ,

faut pas déclarer la variable résultat comme type "date" pour la fonction
de
Lesteph).
Pourquoi? ne faudrait-il pas (cela fonctionne bien ainsi)

c'est un choix et qui dépend du contexte pour ma part je préfère tout
déclarer,
d'autant que tu disais avoir un pb de format date
et aussi:
Mais mon contexte est en fait un peu plus compliqué. Ma date à saisir (b)
est saisie dans un userform, dans un textbox.
Or tu disais avant quelquechose de légèrement différent:

"b" est une date qui est saisie dans l'interface de l'assistant fonction
c'est pourquoi je te suggérais en entrée d'y mettre des guillemets.


L'essentiel c'est que cela marche pour toi!
:-)
à bientôt
lSteph


"laurent colledani" a écrit
dans le message de news:

merci pour vos solutions, elles fonctionnent bien en l'état (à part qu'il
ne
faut pas déclarer la variable résultat comme type "date" pour la fonction
de
Lesteph).
Mais mon contexte est en fait un peu plus compliqué. Ma date à saisir (b)
est saisie dans un userform, dans un textbox. Or , je ne peux pas ( et il
ne
faut pas pour faciliter la saisie du formulaire) mettre des guillemets
autour
de la date à saisir.
quand vos fonctions récupèrent la date saisie dans le textbox, elles
comprennent 01/01/01 et non "01/01/01". la conséquence est une date
calculée
qui affiche une date systématiquement au xx/xx/00. (toujours l'an 2000),
sinon le calcul fonctionne + ou - bien sur les jours et mois.

je vous donne un extrait du programme:

************ récupération valeur saisie dans le textebox, mise au format
date régional du système avec "cdate", affectation de cette date dans une
cellule dans un tableau (neccesaire pour les futurs utilisateurs),
affectation de la date dans la variable "b" déclarée type "date" ********


dim b as date
Range("j" & num).Value = CDate(uf1.TextBox5.Value)
b = Range("i" & num).Value



********* la fonction cette fois (si complète au niveau des tests)
*****************************************************

Public Function datebutoir(a As Integer, b As Date)
If a = 1 Then
datebutoir = b + 15
ElseIf a = 2 Then
datebutoir = b + 15
ElseIf a = 3 Then
datebutoir = b + 31
ElseIf a = 4 Then
datebutoir = b + 31
ElseIf a = 5 Then
datebutoir = b + 15
ElseIf a = 6 Then
datebutoir = b + 31
Else: datebutoir = b + 90
End If
datebutoir = Format(datebutoir, "dd/mm/yy")
End Function



****affectation de la formule dans une cellule du tableau *****
Range("L" & num).Value = datebutoir(a, b)

encore merci pour votre aide


"laurent colledani" wrote:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance





Avatar
LeSteph
Re,
(note que JG aussi propose As Date et cela me semble correct)
sinon désolé je n'avais pas tout lu :
le Cdate n'est pas nécessaire si
b=Format(textbox5,"dd-mm-yy")
qui fera le travail.
selon cet exemple à adapter à ta procédure:
'******
'**dans code uf ***
Private Sub CommandButton1_Click()
on error resume next 'à remplacer par une gestion des err de saisie
[a5] = coldat(1, TextBox1)
UserForm1.Hide
End Sub
'******
'**dans module1**
Public Function coldat(a As Integer, b As Date) As Date

If a = 1 Then
coldat = b + 15
Else
coldat = b + 90
End If
coldat = Format(coldat, "dd/mm/yy")
End Function

Sub affuf()
UserForm1.Show
End Sub
'***********
'Amicalement .
'lSteph

"laurent colledani" a écrit
dans le message de news:

merci pour vos solutions, elles fonctionnent bien en l'état (à part qu'il
ne
faut pas déclarer la variable résultat comme type "date" pour la fonction
de
Lesteph).
Mais mon contexte est en fait un peu plus compliqué. Ma date à saisir (b)
est saisie dans un userform, dans un textbox. Or , je ne peux pas ( et il
ne
faut pas pour faciliter la saisie du formulaire) mettre des guillemets
autour
de la date à saisir.
quand vos fonctions récupèrent la date saisie dans le textbox, elles
comprennent 01/01/01 et non "01/01/01". la conséquence est une date
calculée
qui affiche une date systématiquement au xx/xx/00. (toujours l'an 2000),
sinon le calcul fonctionne + ou - bien sur les jours et mois.

je vous donne un extrait du programme:

************ récupération valeur saisie dans le textebox, mise au format
date régional du système avec "cdate", affectation de cette date dans une
cellule dans un tableau (neccesaire pour les futurs utilisateurs),
affectation de la date dans la variable "b" déclarée type "date" ********


dim b as date
Range("j" & num).Value = CDate(uf1.TextBox5.Value)
b = Range("i" & num).Value



********* la fonction cette fois (si complète au niveau des tests)
*****************************************************

Public Function datebutoir(a As Integer, b As Date)
If a = 1 Then
datebutoir = b + 15
ElseIf a = 2 Then
datebutoir = b + 15
ElseIf a = 3 Then
datebutoir = b + 31
ElseIf a = 4 Then
datebutoir = b + 31
ElseIf a = 5 Then
datebutoir = b + 15
ElseIf a = 6 Then
datebutoir = b + 31
Else: datebutoir = b + 90
End If
datebutoir = Format(datebutoir, "dd/mm/yy")
End Function



****affectation de la formule dans une cellule du tableau *****
Range("L" & num).Value = datebutoir(a, b)

encore merci pour votre aide


"laurent colledani" wrote:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance





Avatar
laurent colledani
----------------------------------------------------------
bravo leStheph,

Ta solution fonctionne, ma date est calculée correctement.
merci encore et peut être à bientôt car mon projet n'est pas encore terminée !
cordialement
laurent

---------------------------------------------------------

"laurent colledani" wrote:

bonjour
j'ai une fonction avec comme argument une date
cette fonction doit me rajouter 90 jours par exemple à la date saisie.

comment faire pour que la fonction affiche une donnée calculée à la bonne
date et au format date

merci d'avance



1 2