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

Automatiser l'affectation d'une valeur à un champ

9 réponses
Avatar
Jacques
Bonjour,

J'ai un formulaire accueil avec une liste d=E9roulante qui affiche gr=E2ce
=E0 ce code une valeur de ce type (2006-2007), et qui change
automatiquement chaque 1er septembre de chaque ann=E9e ( le 1er
septembre de cette ann=E9e 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=E9e
Me.Modifiable24.Value =3D DLookup("R=E9fSaison", "Tbl Saisons
sportives", _
"D=E9butSaison <=3D" & Fdate(Date) & " And D=E9butSaison > " &
Fdate(DateAdd("yyyy", -1, Date)))

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

Je voudrais qu'au moment de ce changement les champs vides =AB d=E9part =
=BB
et =AB date adh=E9sion =BB de ma table adh=E9rents prennent la valeur False=
et
la valeur de D=E9butSaison en entier(01/09/2007).

Merci de votre aide.

Salutations.

9 réponses

Avatar
Raymond [mvp]
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" a écrit dans le message de news:

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.
Avatar
Jacques
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" a écrit dans le message de news:

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.

Avatar
Raymond [mvp]
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" a écrit dans le message de news:

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.
Avatar
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 à 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" a écrit dans le message de news:

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.

Avatar
Raymond [mvp]
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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.

Avatar
Jacques
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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.


Avatar
Raymond [mvp]
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" a écrit dans le message de news:

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.
Avatar
Jacques
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" a écrit dans le message de news:

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

Avatar
Raymond [mvp]
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" a écrit dans le message de news:


Bonjour Raymond,

Oui mes deux champs sont vide

Salutations