Formatage de date [Résolu]

Signaler
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
Bonjour,
J'ai un formulaire avec une date de naissance. Dans la table elle est enregistrée sous la forme jj/mm/aaaa.
Le demandeur lui importe peu pour l'instant le jour et le mois, il aimerait avoir 01/01/ et seulement l'année à renseigner. J'ai regardé les différents formats,mais je pense qu'il va falloir que je fasse une macro. Je ne renseignerai que l'année puis avec la macro forcer 01 pour le jour et pour le mois.
Qu'en pensez-vous et si vous avez le code et la façon de le faire je suis preneuse.
Bonne soirée
PS par contre, je ne veux pas modifier le jour et le mois pour les enregistrements déjà créés.



Configuration: Windows / Firefox 88.0

11 réponses

Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021
854
bonjour, quel est le type du champ dans la table?
tu ne dis rien de ton formulaire, ni de comment le formulaire provoque la création d'un enregistrement.
tu peux peut-être utiliser la fonction DateSerial, pour transformer l'année en une date, exemple:
DateSerial(2054,1,1)
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Bonjour, Merci pour votre retour rapide.
C'est un formulaire pour mettre à jour une table Adhérent, dans cette table il y a un champ Né le -
(en aparté je n'aime pas ce nom de champ, mais ce n'est pas moi qui ai créé cette BD). je viens juste apporter des modifs et régler certains problèmes.
le format de Né le est en Date, général et le format est 00/00/00;0;_
L'utilisateur voudrait ne taper que l'année lors d'une inscription et que cela inscrive dans la table 01/01/1972 par ex.
Par contre il veut conserver pour les adhérents déjà créés leur date d'anniversaire car si marche arrière, il n'y aura que les nouveaux à modifier.
Il y a un bouton "Nouvelle Inscription" avec ce contenu sur clic :

Private Sub Commande193_Click()
On Error GoTo Err_Commande193_Click


DoCmd.GoToRecord , , acNewRec
If Month(Date) < 8 Then
INSCRADH = Year(Date) - 1

Else
INSCRADH = Year(Date)

End If
[Insen cours] = DLookup("[AnnéeCours]", "Année en cours")

Me.CivADH.SetFocus
Me.Code_intervenant = 1

Exit_Commande193_Click:
Exit Sub

Err_Commande193_Click:
MsgBox Err.Description
Resume Exit_Commande193_Click

End Sub

Le format de la date dans le formulaire est texte brut avec un masque de saisie 00/00/00;0;_

J'aurais voulu que dans le champ né le, le curseur arrive directement sur
l'année type 01/01/???? lors d'un nouvel enregistrement et en Modification, c'est pas grave, on modifie rarement des dates d'anniversaire, à moins d'une erreur. Et donc dans la table on obtiendrait 01/01/1972
J'espère que cela vous paraît clair.
Merci à vous

Il y a longtemps que je ne pratique plus et beaucoup de choses oubliées et des nouveautés à couper le souffle. Style on point sur la table principale et on clic sur formulaire et là magique tout apparait.
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021
854
tu n'as pas répondu à ma question, peux-tu confirmer que le type du champ "né le" est "Date/Heure"? Le format n'a en général que très peu d'importance.

Le plus propre, je pense, serait de créer un champ année dans la table, au lieu d'enregistrer une fausse date de naissance dans ce cas.

Sinon, ajouter un contrôle
année de naissance
dans le formulaire, et, quand ce contrôle est modifié, adapter la valeur du contrôle
né le
du formulaire.
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Oui désolée, j'ai oublié de préciser c'est bien "Date/Heure".
Elle ne veut pas d'un autre champ, je lui avais demandé.
Ce que je pensais, c'est de modifier le formulaire. Remplacer le champ "né le" par "AnnéeNaissance" et après modif, il crée 01/01/Année renseignée dans le champ "AnnéeNaissance" et met à jour le champ "né le" qui pourrait rester dans le formulaire en non visible. (je ne sais plus s'il doit apparaitre sur le formulaire ou non pour qu'il soit maj)
Le jour où ils veulent revenir à la saisie complète, il suffira de modifier ce champ par "né le"
Qu'est ce que vous en pensez ? Par contre les dates rendant parfois des choses bizarres, je ne sais pas trop comment faire ça.
Cela revient à votre deuxième point. Je peux laisser les 2 en visuel mais ne pouvoir modifier que le champ "AnnéeNaissance" du formulaire.
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Bonjour,

Comment créer un champ indépendant dans un formulaire pour enregistrer une valeur qui sera année de naissance et pouvoir par vba inscrire dans né le 01/01/année de naissance ?
Merci à vous
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021
>
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021
>
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021
>
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

https://drive.google.com/file/d/1vUGeyH1_WIwEMUyks8HbGDmzQMxD0HOt/view?usp=sharing


Cela fonctionne t'il ?
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021
854 >
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

bien reçu, je regarderai ces prochains jours.
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021
>
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021

Ok merci à vous
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Bonsoir
Oui je veux bien mais quel fichier dans une BD access ?
Merci
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021
854
en as-tu plusieurs?
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021
>
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021

Bonjour, J'ai réduit ma base au minima, par contre je ne sais pas comment vous l'envoyer. C'est la 1ère fois.
Merci
https://www.cjoint.com/c/KEeu1m0mLqE
bonsoir
tu trouveras dans ce lien un fichier compressé avec diffirent format de date
tiens moi au courant
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Merci à vous.
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021
854
voilà, je propose ceci:
- créer un nouveau contrôle de type "boîte de texte" nommé "andn" dans le formulaire, destiné à contenir l'année de naissance
- rendre non modifiable le contrôle nommé "Né__e_" (ou le cacher, mais pas le supprimer)
- ajouter ce code dans le formulaire:
Private Sub Form_Current()
If Not IsNull(Me.Né__e_) Then
    Me.andn = Year(Me.Né__e_)
Else
    Me.andn = Null
End If
End Sub
Private Sub andn_AfterUpdate()
If Not IsNull(andn) Then
    If IsNumeric(andn) Then
        If Int(andn) = CSng(andn) And Int(andn) > 0 Then
            Me.Né__e_ = DateSerial(andn, 1, 1)
        End If
    End If
End If
End Sub
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Super, cela répond exactement à mes besoins, j'ai rajouté un masque de saisie : 0000;;_ à ce champ "andn" de façon qu'il ne tape que 4 chiffres.
Je ne connaissais pas le code CSng ou je ne m'en souviens plus c'est tellement loin la programmation.
J'aimerai bien que vous me l'expliquiez, par contre est-il utile du fait que j'ai mis un masque de saisie ?
Grand merci à vous
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021
854
csng() convertit le texte en un nombre (de type
single
).
comme tu l'as deviné, les lignes 10, 11, 13 et 14 sont inutiles en présence de ce masque de saisie. elles vérifient que le texte est un nombre entier positif.
je les ai ajoutées après avoir supprimé le masque de saisie que j'avais créé initialement, ne sachant si tu pouvais ou voulais utiliser un tel masque (surtout, pour éviter d'expliquer le masque).
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Ok, c'est ce que j'ai fait. Le masque c'est mieux, sinon il vont me mettre une virgule par erreur ou autre.
Merci
Messages postés
15593
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 mai 2021
854
peux-tu alors marquer la discussion comme résolue?
Messages postés
18
Date d'inscription
samedi 1 mai 2021
Statut
Membre
Dernière intervention
6 mai 2021

Je reviendrai plus tard sur un autre problème si je n'arrive pas à le résoudre, c'est pour insertion d'une photo sur mon formulaire.
A bientôt