Modification valeur par défaut d'un champ

Résolu/Fermé
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - Modifié par Iruka72 le 23/03/2010 à 12:21
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - 26 mars 2010 à 13:10
Bonjour, j'ai un formulaire sous access qui doit avoir dans le bas de page une inscription sur la dernière modification de forme du formulaire, n'ayant pas trouvé de moyen de le mettre automatiquement lors d'une modification de structure du formulaire, j'avais pensé mettre un champ que l'utilisateur qui fait les modifications de forme (il n'y a qu'une seule personne dans l'entreprise qui a les droits de le faire).

La valeur apparaîtra à chaque fois en bas de page et restera la même tant que la structure du formulaire n'a pas été modifiée, donc tant que l'utilisateur ayant la possibilité de modifié le formulaire n'a pas entré la valeur dans le champ (a défaut de laisser le formulaire détecter une modification de structure, je n'ai pas vu d'événement permettant de le gérer).

J'avais pensé mettre au départ la valeur dans les propriétés du champ, dans la valeur par défaut, et puis par code vba lors de l'insertion d'une valeur par l'utilisateur dans le champ fait pour ca.

Mais je ne sais pas comment on peut modifier cette valeur par défaut en vba.
J'avais pensé utilisé un code de ce style sans la sécurité lié a l'utilisateur pour l'instant:

Private Sub Révision_Click()        
Dim a As Long        
a = MsgBox("Avez vous vraiment modifier la structure du formulaire?", vbYesNo)        
If (a = 6) Then        
ValeurChampParDéfaut = Now()       
[Révision]=Valeur champParDéfaut       
Else        
'je pense que je pourrais le laisser vide, donc pas de else, si c'est non, bah il fait rien, mais 'par habitude je préfère mettre quelque chose pour sécurisé et être sur de ce qu'il me met 'dans ce champ.    

[Révision]=Valeur champParDéfaut       
End If        
End Sub


edit:J'ai un peu avancé dans ma réflexion, la valeur je peux la fixer une fois pour toute au démarrage du formulaire, à l'ouverture du formulaire le champ Révision vaut autant, si j'appuie sur mon champ, il active le code précédent, si oui, il met la valeur d'aujourd'hui dans le champ et doit modifier la valeur par défaut à l'ouverture du formulaire, il faut donc qu'à l'ouverture du formulaire, je prenne la valeur par défaut, donc la valeur précédente du champ Révision. Si l'utilisateur choisi non, on garde la valeur précédente du champ Révision.
Le problème est que je ne sais pas comment lui dire de prendre la valeur précédente dans le champ.


J'espère avoir été clair, merci d'avance.

2 réponses

Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
Modifié par Iruka72 le 23/03/2010 à 16:28
Désolé pour le double post mais ca commence a faire pas mal de mise à jour du premier post.

J'ai bien avancé, j'ai trouvé le moyen de lui dire quel sera la valeur par défaut tant que ce champ est pas modifié, voici le code :


'modifie avec la date du jour quand on clique et qu'on choisi oui  
Private Sub Révision_Click()  
Dim a As Long  
a = MsgBox("Avez vous vraiment modifier la structure du formulaire?", vbYesNo)  
If (a = 6) Then  
[Révision] = Date  
End If  
End Sub  
'après mise à jour, la valeur mise devient la valeur par défaut  
Private Sub Révision_Dirty(Cancel As Integer)  
Me.Révision.DefaultValue = Me.Révision.Value  
End Sub  


Après mise à jour du champ, la valeur par défaut est chargée dans les propriété du champ où je vois s'afficher la valeur mais si j'ouvre un nouvel enregistrement j'ai un nombre du style à 1524865242586E-6 qui apparait, je ne comprend pas pourquoi, l'erreur doit provenir de Me.Révision.value, la valeur value ne doit pas gèrer les dates, mais dans ce cas qu'est ce que je peux mettre à la place?

J'ai essayé de mettre Me.Révision.DefaultValue = [Révision], j'ai le même soucis.

Et après transformation du champ en date (j'avais oublié et laisser en texte avec masque de saisie au démarrage), il me met encore la valeur dans les propriété mais cette fois je n'ai plus rien dans le champ lors d'un nouvel enregistrement.


Et si j'essaye de mettre directement une date sans passer par la msgbox et mettre la date obligatoirement d'aujourd'hui ca me met bien une date le 30/12/1899 invariablement et si je clique sur le champ j'ai ceci 00:05:28 , et si j'oublie le masque de saisie, c'est 00:05:28.
J'espère que vous saurez m'aider, je continue à chercher mais tout coups de mais est bienvenue
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
Modifié par Iruka72 le 26/03/2010 à 14:39
j'ai trouvé une solution qui fonctionne, même si c'est pas exactement ce que je voulais:

Voici le code sur le champ lui même :

Private Sub Révision_Click() 
Dim a As Long 
a = MsgBox("Avez vous vraiment modifier la structure du formulaire?", vbYesNo) 
If (a = 6) Then 
b = MsgBox("Voulez vous mettre la date d'aujourd'hui?", vbYesNo) 
If (b = 6) Then 
Me.Révision.Value = Date 
End If 
End If 
End Sub 



et sur l'activation du formualire:
If Me.NewRecord Then 
     If DCount("*", "Stagiaire") > 0 Then 
         Me.Révision = Nz(DLookup("Révision", "Stagiaire", "N°infoStagiaire=" _ 
                             & DMax("N°infoStagiaire", "Stagiaire")), 0) 
     End If 
End If


Ca me fait bien passer d'un formulaire à l'autre la valeur du champ révision et change bien si je modifie la valeur manuellement.

J'aurais préféré pouvoir modifier uniquement cette date sans avoir à le faire avec un enregistrement complet mais je ne vois vraiment pas comment faire^^".
0