Automatiser l'affectation d'une valeur à un champ

Le
Jacques
Bonjour,

J'ai un formulaire accueil avec une liste déroulante qui affiche grâce
à ce code une valeur de ce type (2006-2007), et qui change
automatiquement chaque 1er septembre de chaque année ( le 1er
septembre de cette année il affichera (2007-2008)

Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
' Changement automatique de la date de la saison sportive au 01/09
de chaque année
Me.Modifiable24.Value = DLookup("RéfSaison", "Tbl Saisons
sportives", _
"DébutSaison <=" & Fdate(Date) & " And DébutSaison > " &
Fdate(DateAdd("yyyy", -1, Date)))

Public Function Fdate(P As Date) As String
Fdate = Chr(35) & Format(P, "mm-dd-yy") & Chr(35)
End Function

Je voudrais qu'au moment de ce changement les champs vides « départ =
»
et « date adhésion » de ma table adhérents prennent la valeur False=
et
la valeur de DébutSaison en entier(01/09/2007).

Merci de votre aide.

Salutations.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #6280651
Bonjour.

pourquoi ne pas faire simplement ceci:

Dim Période As String
If Month(Date_du_Jour) >= 1 And Month(Date_du_Jour) <= 8 Then
Période = (Year(Date_du_Jour) - 1) & "-" & Year(Date_du_Jour)
Else
Période = Year(Date_du_Jour) & "-" & (Year(Date_du_Jour) + 1)
End If

pour la 2e partie de la question:
départ: indique Vrai dans la valeur par défaut

début de saison:
tu peux faire pareil:
Dim Début_de_saison As Date
If Month(Date_du_Jour) >= 1 And Month(Date_du_Jour) <= 8 Then
Début_de_saison = DateSerial((Year(Date_du_Jour) - 1), 9, 1)
Else
Début_de_saison = DateSerial(Year(Date_du_Jour), 9, 1)
End If

tu peux aussi mélanger les deux procédures pour tout faire en même temps
dans le même if.

Dim Début_de_saison As Date
Dim Période As String
If Month(Date_du_Jour) >= 1 And Month(Date_du_Jour) <= 8 Then
Début_de_saison = DateSerial((Year(Date_du_Jour) - 1), 9, 1)
Période = (Year(Date_du_Jour) - 1) & "-" & Year(Date_du_Jour)
Else
Début_de_saison = DateSerial(Year(Date_du_Jour), 9, 1)
Période = Year(Date_du_Jour) & "-" & (Year(Date_du_Jour) + 1)
End If

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273


"Jacques"
Bonjour,

J'ai un formulaire accueil avec une liste déroulante qui affiche grâce
à ce code une valeur de ce type (2006-2007), et qui change
automatiquement chaque 1er septembre de chaque année ( le 1er
septembre de cette année il affichera (2007-2008)

Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
'--- Changement automatique de la date de la saison sportive au 01/09
de chaque année
Me.Modifiable24.Value = DLookup("RéfSaison", "Tbl Saisons
sportives", _
"DébutSaison <=" & Fdate(Date) & " And DébutSaison > " &
Fdate(DateAdd("yyyy", -1, Date)))

Public Function Fdate(P As Date) As String
Fdate = Chr(35) & Format(P, "mm-dd-yy") & Chr(35)
End Function

Je voudrais qu'au moment de ce changement les champs vides « départ »
et « date adhésion » de ma table adhérents prennent la valeur False et
la valeur de DébutSaison en entier(01/09/2007).

Merci de votre aide.

Salutations.
Jacques
Le #6280311
On 25 mai, 20:27, "Raymond [mvp]" wrote:
Bonjour.

pourquoi ne pas faire simplement ceci:

Dim Période As String
If Month(Date_du_Jour) >= 1 And Month(Date_du_Jour) <= 8 Then
Période = (Year(Date_du_Jour) - 1) & "-" & Year(Date_du_Jour)
Else
Période = Year(Date_du_Jour) & "-" & (Year(Date_du_Jour) + 1)
End If

pour la 2e partie de la question:
départ: indique Vrai dans la valeur par défaut

début de saison:
tu peux faire pareil:
Dim Début_de_saison As Date
If Month(Date_du_Jour) >= 1 And Month(Date_du_Jour) <= 8 Then
Début_de_saison = DateSerial((Year(Date_du_Jour) - 1), 9, 1)
Else
Début_de_saison = DateSerial(Year(Date_du_Jour), 9, 1)
End If

tu peux aussi mélanger les deux procédures pour tout faire en même temps
dans le même if.

Dim Début_de_saison As Date
Dim Période As String
If Month(Date_du_Jour) >= 1 And Month(Date_du_Jour) <= 8 Then
Début_de_saison = DateSerial((Year(Date_du_Jour) - 1), 9, 1)
Période = (Year(Date_du_Jour) - 1) & "-" & Year(Date_du_Jour)
Else
Début_de_saison = DateSerial(Year(Date_du_Jour), 9, 1)
Période = Year(Date_du_Jour) & "-" & (Year(Date_du_Jour) + 1)
End If

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum:http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativit é !http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-4 5...

"Jacques"
Bonjour,

J'ai un formulaire accueil avec une liste déroulante qui affiche grâce
à ce code une valeur de ce type (2006-2007), et qui change
automatiquement chaque 1er septembre de chaque année ( le 1er
septembre de cette année il affichera (2007-2008)

Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
'--- Changement automatique de la date de la saison sportive au 01/09
de chaque année
Me.Modifiable24.Value = DLookup("RéfSaison", "Tbl Saisons
sportives", _
"DébutSaison <=" & Fdate(Date) & " And DébutSaison > " &
Fdate(DateAdd("yyyy", -1, Date)))

Public Function Fdate(P As Date) As String
Fdate = Chr(35) & Format(P, "mm-dd-yy") & Chr(35)
End Function

Je voudrais qu'au moment de ce changement les champs vides « départ »
et « date adhésion » de ma table adhérents prennent la valeur Fal se et
la valeur de DébutSaison en entier(01/09/2007).

Merci de votre aide.

Salutations.


Bonjour Raymond,

Merci pour ta réponse, mais je n'y arrive pas.

En fait je voudrais exécuter ce code une seule fois à partir du 1er
septembre de chaque année et cela automatiquement à l'ouverture
de mon form Accueil.
(le MillLicence 07 et la FinSaison 1/08/2007).


rq = "SELECT [tbl Adhérents].*, [tbl Adhérents].MillLicence " & _
"FROM [tbl Adhérents] " & _
"WHERE [tbl Adhérents].MillLicence=" & Year(FinSaison) & ";"

Set rs = db.OpenRecordset(rq, dbOpenDynaset)

Do While Not rs.EOF
rs.Edit
rs("Départ") = -1
rs("DateDépart") = FinSaison
rs.Update
rs.MoveNext
Loop

Salutations.

Raymond [mvp]
Le #6280291
Bonjour.

qu'a à voir cette nouvelle question avec la précédente ? as-tu résolu le
problème précédent de la période ?
pour la question actuelle,
tu veux exécuter une seule fois la procédure en septembre ou à chaque
ouverture du formulaire ? ce n'est pas pareil. on dirait que tu veux
modifier des champs pour des adhérents qui vont partir en fin de saison.
c'est ça? donc faudrait le faire à chaque ouverture ? on peut très bien le
faire par requête. confirme-nous tout ça et on trouvera une solution.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273


"Jacques"
Bonjour Raymond,

Merci pour ta réponse, mais je n'y arrive pas.

En fait je voudrais exécuter ce code une seule fois à partir du 1er
septembre de chaque année et cela automatiquement à l'ouverture
de mon form Accueil.
(le MillLicence 07 et la FinSaison 1/08/2007).


rq = "SELECT [tbl Adhérents].*, [tbl Adhérents].MillLicence " & _
"FROM [tbl Adhérents] " & _
"WHERE [tbl Adhérents].MillLicence=" & Year(FinSaison) & ";"

Set rs = db.OpenRecordset(rq, dbOpenDynaset)

Do While Not rs.EOF
rs.Edit
rs("Départ") = -1
rs("DateDépart") = FinSaison
rs.Update
rs.MoveNext
Loop

Salutations.
Jacques
Le #6280251
On 26 mai, 15:02, "Raymond [mvp]" wrote:
Bonjour.

qu'a à voir cette nouvelle question avec la précédente ? as-tu ré solu le
problème précédent de la période ?
pour la question actuelle,
tu veux exécuter une seule fois la procédure en septembre ou à chaq ue
ouverture du formulaire ? ce n'est pas pareil. on dirait que tu veux
modifier des champs pour des adhérents qui vont partir en fin de saison.
c'est ça? donc faudrait le faire à chaque ouverture ? on peut très bien le
faire par requête. confirme-nous tout ça et on trouvera une solution.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum:http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativit é !http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-4 5...

"Jacques"
Bonjour Raymond,

Merci pour ta réponse, mais je n'y arrive pas.

En fait je voudrais exécuter ce code une seule fois à partir du 1er
septembre de chaque année et cela automatiquement à l'ouverture
de mon form Accueil.
(le MillLicence 07 et la FinSaison 1/08/2007).

rq = "SELECT [tbl Adhérents].*, [tbl Adhérents].MillLicence " & _
"FROM [tbl Adhérents] " & _
"WHERE [tbl Adhérents].MillLicence=" & Year(FinSaison) & ";"

Set rs = db.OpenRecordset(rq, dbOpenDynaset)

Do While Not rs.EOF
rs.Edit
rs("Départ") = -1
rs("DateDépart") = FinSaison
rs.Update
rs.MoveNext
Loop

Salutations.


Re Bonjour Raymond,

Sur mon premier message j'avais écrit cela :
"Je voudrais qu'au moment de ce changement les champs vides « départ
» et « date adhésion » de ma table adhérents prennent la valeur F alse
et la valeur de DébutSaison en entier(01/09/2007). "

Il faut lire DébutSaison en entier(01/09/2007).

En effet je veux exécuter une seule fois la procédure après le 31/08
de chaque année.

Le 01/09/2007 je suppose que tous les adhérents sont partis, et au
fur et à mesure des renouvellements d'adhésions je cocherai la date
départ et vider le champ date départ pour les faire réapparaitre.



Salutations.

Raymond [mvp]
Le #6280171
pour le faire en ouverture de formulaire tu peux lancer une requête de mise
à jour:
UPDATE table1 SET table1.DébutSaison= IIf(Month(Date())>=1 And
Month(Date())<=8,DateSerial((Year(Date())-1),9,1),DateSerial(Year(Date()),9,1)),
table1.départ= False WHERE (((table1.DébutSaison) Is Null) AND
((table1.départ) Is Null));

il faut que les deux champs soient vides pour qu'ils soient sélectionnés et
mis à jour. je n'ai pas testé.
remplace table1 par le nom réel de ta table.

tu peux le faire aussi ponctuellement dans le formulaire dans l'événement
afterupdate des deux champs et lorsqu'ils sont vides tous les deux , tu
remplis:
Private Sub Départ_AfterUpdate()
If IsNull(Me.DébutSaison) And IsNull(Me.Départ) Then
Me.Départ= False
If Month(Date) >= 1 And Month(Date) <= 8 Then
DébutSaison = DateSerial((Year(Date) - 1), 9, 1)
Else
DébutSaison = DateSerial(Year(Date), 9, 1)
End If
End If
End Sub
Private Sub DébutSaison_AfterUpdate()
If IsNull(Me.DébutSaison) And IsNull(Me.Départ) Then
Me.Départ= False
If Month(Date) >= 1 And Month(Date) <= 8 Then
DébutSaison = DateSerial((Year(Date) - 1), 9, 1)
Else
DébutSaison = DateSerial(Year(Date), 9, 1)
End If
End If
End Sub
tu peux réduire les procédures pour en faire une commune que tu appelles
dans chaque événement

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273


"Jacques"
On 26 mai, 15:02, "Raymond [mvp]" wrote:
Bonjour.

qu'a à voir cette nouvelle question avec la précédente ? as-tu résolu le
problème précédent de la période ?
pour la question actuelle,
tu veux exécuter une seule fois la procédure en septembre ou à chaque
ouverture du formulaire ? ce n'est pas pareil. on dirait que tu veux
modifier des champs pour des adhérents qui vont partir en fin de saison.
c'est ça? donc faudrait le faire à chaque ouverture ? on peut très bien le
faire par requête. confirme-nous tout ça et on trouvera une solution.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum:http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité
!http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45...

"Jacques"
Bonjour Raymond,

Merci pour ta réponse, mais je n'y arrive pas.

En fait je voudrais exécuter ce code une seule fois à partir du 1er
septembre de chaque année et cela automatiquement à l'ouverture
de mon form Accueil.
(le MillLicence 07 et la FinSaison 1/08/2007).

rq = "SELECT [tbl Adhérents].*, [tbl Adhérents].MillLicence " & _
"FROM [tbl Adhérents] " & _
"WHERE [tbl Adhérents].MillLicence=" & Year(FinSaison) & ";"

Set rs = db.OpenRecordset(rq, dbOpenDynaset)

Do While Not rs.EOF
rs.Edit
rs("Départ") = -1
rs("DateDépart") = FinSaison
rs.Update
rs.MoveNext
Loop

Salutations.


Re Bonjour Raymond,

Sur mon premier message j'avais écrit cela :
"Je voudrais qu'au moment de ce changement les champs vides « départ
» et « date adhésion » de ma table adhérents prennent la valeur False
et la valeur de DébutSaison en entier(01/09/2007). "

Il faut lire DébutSaison en entier(01/09/2007).

En effet je veux exécuter une seule fois la procédure après le 31/08
de chaque année.

Le 01/09/2007 je suppose que tous les adhérents sont partis, et au
fur et à mesure des renouvellements d'adhésions je cocherai la date
départ et vider le champ date départ pour les faire réapparaitre.



Salutations.

Jacques
Le #6280021
On 26 mai, 17:11, "Raymond [mvp]" wrote:
pour le faire en ouverture de formulaire tu peux lancer une requête de mise
à jour:
UPDATE table1 SET table1.DébutSaison= IIf(Month(Date())>=1 And
Month(Date())<=8,DateSerial((Year(Date())-1),9,1),DateSerial(Year(Date( )),9­,1)),
table1.départ= False WHERE (((table1.DébutSaison) Is Null) AND
((table1.départ) Is Null));

il faut que les deux champs soient vides pour qu'ils soient sélectionn és et
mis à jour. je n'ai pas testé.
remplace table1 par le nom réel de ta table.

tu peux le faire aussi ponctuellement dans le formulaire dans l'événe ment
afterupdate des deux champs et lorsqu'ils sont vides tous les deux , tu
remplis:
Private Sub Départ_AfterUpdate()
If IsNull(Me.DébutSaison) And IsNull(Me.Départ) Then
Me.Départ= False
If Month(Date) >= 1 And Month(Date) <= 8 Then
DébutSaison = DateSerial((Year(Date) - 1), 9, 1)
Else
DébutSaison = DateSerial(Year(Date), 9, 1)
End If
End If
End Sub
Private Sub DébutSaison_AfterUpdate()
If IsNull(Me.DébutSaison) And IsNull(Me.Départ) Then
Me.Départ= False
If Month(Date) >= 1 And Month(Date) <= 8 Then
DébutSaison = DateSerial((Year(Date) - 1), 9, 1)
Else
DébutSaison = DateSerial(Year(Date), 9, 1)
End If
End If
End Sub
tu peux réduire les procédures pour en faire une commune que tu appel les
dans chaque événement

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum:http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativit é !http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-4 5...

"Jacques"
On 26 mai, 15:02, "Raymond [mvp]" wrote:





Bonjour.

qu'a à voir cette nouvelle question avec la précédente ? as-tu r ésolu le
problème précédent de la période ?
pour la question actuelle,
tu veux exécuter une seule fois la procédure en septembre ou à ch aque
ouverture du formulaire ? ce n'est pas pareil. on dirait que tu veux
modifier des champs pour des adhérents qui vont partir en fin de sais on.
c'est ça? donc faudrait le faire à chaque ouverture ? on peut trè s bien le
faire par requête. confirme-nous tout ça et on trouvera une solutio n.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum:http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativit é
!http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-4 5...

"Jacques"
Bonjour Raymond,

Merci pour ta réponse, mais je n'y arrive pas.

En fait je voudrais exécuter ce code une seule fois à partir du 1er
septembre de chaque année et cela automatiquement à l'ouverture
de mon form Accueil.
(le MillLicence 07 et la FinSaison 1/08/2007).

rq = "SELECT [tbl Adhérents].*, [tbl Adhérents].MillLicence " & _
"FROM [tbl Adhérents] " & _
"WHERE [tbl Adhérents].MillLicence=" & Year(FinSaison) & ";"

Set rs = db.OpenRecordset(rq, dbOpenDynaset)

Do While Not rs.EOF
rs.Edit
rs("Départ") = -1
rs("DateDépart") = FinSaison
rs.Update
rs.MoveNext
Loop

Salutations.


Re Bonjour Raymond,

Sur mon premier message j'avais écrit cela :
"Je voudrais qu'au moment de ce changement les champs vides « départ
» et « date adhésion » de ma table adhérents prennent la valeur False
et la valeur de DébutSaison en entier(01/09/2007). "

Il faut lire DébutSaison en entier(01/09/2007).

En effet je veux exécuter une seule fois la procédure après le 31/08
de chaque année.

Le 01/09/2007 je suppose que tous les adhérents sont partis, et au
fur et à mesure des renouvellements d'adhésions je cocherai la date
départ et vider le champ date départ pour les faire réapparaitre.

Salutations.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonsoir Raymond,

C'est bien la solution à l'ouverture du formulaire qui me convient le
mieux , seulement lorsque j'exécute le code
il ne se passe rien, même lorsque je change le date système pour mes
tests.

Salutations.


Raymond [mvp]
Le #6279931
Bonjour.

Est-ce que tu as des enregistrements qui satisfont la clause where, c'est à
dire les champs null ?

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273


"Jacques"
On 26 mai, 17:11, "Raymond [mvp]" wrote:
Bonsoir Raymond,

C'est bien la solution à l'ouverture du formulaire qui me convient le
mieux , seulement lorsque j'exécute le code
il ne se passe rien, même lorsque je change le date système pour mes
tests.

Salutations.
Jacques
Le #6279891
On 27 mai, 17:28, "Raymond [mvp]" wrote:
Bonjour.

Est-ce que tu as des enregistrements qui satisfont la clause where, c'est à
dire les champs null ?

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum:http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativit é !http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-4 5...

"Jacques"
On 26 mai, 17:11, "Raymond [mvp]" wrote:
Bonsoir Raymond,

C'est bien la solution à l'ouverture du formulaire qui me convient le
mieux , seulement lorsque j'exécute le code
il ne se passe rien, même lorsque je change le date système pour mes
tests.

Salutations.


Bonjour Raymond,

Oui mes deux champs sont vide

Salutations

Raymond [mvp]
Le #6279861
peux-tu me passer la table et la requête dans une base vierge par mail ? si
c'est possible. prends l'adresse dans ma signature et enlève les xyz de
protection.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273


"Jacques"

Bonjour Raymond,

Oui mes deux champs sont vide

Salutations
Publicité
Poster une réponse
Anonyme