OVH Cloud OVH Cloud

Paramètrage de champs

10 réponses
Avatar
lolo
Bonjour =E0 tous,

Voila sur mon userform j'ai un champ appel=E9 "valid=E9 conforme le" o=F9
j'inscris une date, sur cette userform j'ai un autre champ appel=E9
"prochain contr=F4le le" et l=E0 je dois ajouter un an par rapport =E0 la
date que j'ai inscrit dans le champs "valid=E9 conforme".

Comment puis faire pour ajouter un an =E0 ma premi=E8re date ?

Merci de votre aide

A++

10 réponses

Avatar
Garette
Bonjour,

Un exemple qui rajoute 1 an. A adapter à votre contexte :

Sub test()
Var = "12/5/2006"
Var2 = Day(Var) & "/" & Month(Var) & "/" & Year(Var) + 1
MsgBox Var2 'ou MsgBox CDate(Var2)
End Sub
Avatar
lSteph
Bonjour,
Dans une feuille le pb des années bisextiles
est contourné selon le résultat da la fonction
date(Année;Mois;Jour)
Ce n'est pas une bijection car 29 Fév et 01 Mars font indépendament de
la durée en jours 01er Mars sur l'année suivante.

Dans un textbox ajouter un an en vba doit-il s'interprèter par sa durée
réelle en jour ou une correspondance date à date à cet effet le 29/2 va
planter si on utilise dans le contexte d'un textbox ce que proposé par
Garette et qui pourtant me semblerait préférable si cela pouvait
marcher comme dans la fonction de feuille.
Aussi ce code part du postulat d'ajouter simplement 365 jours.
Tu peux adapter un test dans le calcul d'un datediff suivant le choix
que tu retiendrais av ou après 29 Février pour le cas où l'année de
départ ou celle d'après soit bisextile.


Private Sub TextBox1_AfterUpdate()
Dim tst As Boolean

On Error Resume Next
tst = IsDate(DateValue(TextBox1))
On Error GoTo 0
If tst = True Then
TextBox2 = DateValue(TextBox1) + 365
TextBox1 = DateValue(TextBox1)
Else
MsgBox "Format de date incorrect"
Application.SendKeys "+{TAB}", 1
End If
End Sub

'Cdlt.

'lSteph


Bonjour à tous,

Voila sur mon userform j'ai un champ appelé "validé conforme le" où
j'inscris une date, sur cette userform j'ai un autre champ appelé
"prochain contrôle le" et là je dois ajouter un an par rapport à la
date que j'ai inscrit dans le champs "validé conforme".

Comment puis faire pour ajouter un an à ma première date ?

Merci de votre aide

A++


--
- -

Avatar
Garette
Re,

Effectivement, je n'avais pas géré les années bisextiles.
La solution de ISteph est préférable, elle permet de gérer une durée fixe.

Toutefois, pour un affichage date à date, la fonction DateAdd gère les
années bisextiles de la façon suivante :
28/2/2004 + 1 an = 28/2/2005
29/2/2004 + 1 an = 28/2/2005
1/3/2004 + 1 an = 1/3/2005

Sub test2()
Var = "29/2/2004"
Var2 = DateAdd("yyyy", 1, Var)
MsgBox CDate(Var2)
End Sub
Avatar
lSteph
Bonjour Garette,
Bien vu! ce qui nous donne:

Private Sub TextBox1_AfterUpdate()
Dim tst As Boolean

On Error Resume Next
tst = IsDate(DateValue(TextBox1))
On Error GoTo 0
If tst = True Then
TextBox2 = DateAdd("yyyy", 1, DateValue(TextBox1))
TextBox1 = DateValue(TextBox1)
Else
MsgBox "Format de date incorrect"
Application.SendKeys "+{TAB}", 1
End If
End Sub

'Cdlt

'lSteph

Garette a exposé le 10/12/2006 :
Re,

Effectivement, je n'avais pas géré les années bisextiles.
La solution de ISteph est préférable, elle permet de gérer une durée fixe.

Toutefois, pour un affichage date à date, la fonction DateAdd gère les années
bisextiles de la façon suivante :
28/2/2004 + 1 an = 28/2/2005
29/2/2004 + 1 an = 28/2/2005
1/3/2004 + 1 an = 1/3/2005

Sub test2()
Var = "29/2/2004"
Var2 = DateAdd("yyyy", 1, Var)
MsgBox CDate(Var2)
End Sub


--
- -

Avatar
JB
Bonjour,

Temp = DateSerial(Year(Me.TextBox1) + 1, Month(Me.TextBox1),
Day(Me.TextBox1))
Me.TextBox2 = IIf(Month(Temp) <> Month(Me.TextBox1), Temp - 1, Temp)

JB


Bonjour à tous,

Voila sur mon userform j'ai un champ appelé "validé conforme le" où
j'inscris une date, sur cette userform j'ai un autre champ appelé
"prochain contrôle le" et là je dois ajouter un an par rapport à la
date que j'ai inscrit dans le champs "validé conforme".

Comment puis faire pour ajouter un an à ma première date ?

Merci de votre aide

A++


Avatar
JB
En utilisant la macro complémentaire Utilitaire Analyse:

Me.TextBox2 = Format(Evaluate("MOIS.DECALER(" & Chr(34) & Me.TextBox1 &
Chr(34) & ",12)"), "dd/mm/yy")

JB

Bonjour à tous,

Voila sur mon userform j'ai un champ appelé "validé conforme le" où
j'inscris une date, sur cette userform j'ai un autre champ appelé
"prochain contrôle le" et là je dois ajouter un an par rapport à la
date que j'ai inscrit dans le champs "validé conforme".

Comment puis faire pour ajouter un an à ma première date ?

Merci de votre aide

A++


Avatar
lolo
Salut

j'ai un soucis mes champs sont les suivants daterecep et dateexpe
Je voudrais quand je met une date dans daterecep la date s'inscrive
dans dateexpe avec un an de plus

je fais donc cela :
[CODE]
Private Sub dateexpe_Change()
datexpe.Text = Format(daterecep.Text, "dd/mm/") & Year(daterecep.Text)
+ 1
End Sub[/CODE]

Rien à faire rien ne s'affiche dans mon champ dateexpe....

Pouvez vous m'aider

Merci beaucoup

A++
Avatar
JB
Voir PJ: http://cjoint.com/?mkuk3IlssK

Private Sub daterecep_AfterUpdate()
Temp = DateSerial(Year(Me.dateRecep) + 1, Month(Me.dateRecep),
Day(Me.dateRecep))
Me.dateexpe = IIf(Month(Temp) <> Month(Me.dateRecep), Temp - 1, Temp)
End Sub

JB


Salut

j'ai un soucis mes champs sont les suivants daterecep et dateexpe
Je voudrais quand je met une date dans daterecep la date s'inscrive
dans dateexpe avec un an de plus

je fais donc cela :
[CODE]
Private Sub dateexpe_Change()
datexpe.Text = Format(daterecep.Text, "dd/mm/") & Year(daterecep.Text)
+ 1
End Sub[/CODE]

Rien à faire rien ne s'affiche dans mon champ dateexpe....

Pouvez vous m'aider

Merci beaucoup

A++


Avatar
lSteph
Bonsoir,

Est-ce que tu as lu ce que Garette et moi t'avons proposé,
cela permet d'ajouter une année sans que cela plante dans
un textbox avec message erreur si saisie date non valide.

Cdlt.

lSteph





Il se trouve que lolo a formulé :
Salut

j'ai un soucis mes champs sont les suivants daterecep et dateexpe
Je voudrais quand je met une date dans daterecep la date s'inscrive
dans dateexpe avec un an de plus

je fais donc cela :
[CODE]
Private Sub dateexpe_Change()
datexpe.Text = Format(daterecep.Text, "dd/mm/") & Year(daterecep.Text)
+ 1
End Sub[/CODE]

Rien à faire rien ne s'affiche dans mon champ dateexpe....

Pouvez vous m'aider

Merci beaucoup

A++


--
- -

Avatar
lolo
Bonsoir,

Impec ca fonctionne parfaitement merci de votre coup de main !!!

A++