IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

faire passer une valeur d'un enregistrement à l'autre avec possibilité de modifier [Toutes versions]


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut faire passer une valeur d'un enregistrement à l'autre avec possibilité de modifier
    Bonjour, j'ai un formulaire 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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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'avance un peu, 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. #2
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    '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

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    désolé pour le triple poste mais j'ai trouvé une solution, et vu la taille de l'edit, et la différence entre le post précédent et l'edit, il me semble qu'il vaut mieux faire un nouveau post

    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    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^^", si vous avez une idée je suis preneur, j'avance mais ca fait quelque jour que je cherche une bonne solution, et je n'arrive pas à trouver une meilleure solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Transfert d'une valeur d'un tableau à l'autre avec conditions
    Par gilou41 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/06/2014, 10h49
  2. Réponses: 2
    Dernier message: 27/03/2012, 14h08
  3. faire passer une valeur php en jquery
    Par speedylol dans le forum jQuery
    Réponses: 0
    Dernier message: 21/01/2012, 16h31
  4. Réponses: 3
    Dernier message: 09/11/2011, 18h29
  5. passer une valeur d'un formulaire à un autre de page différentes
    Par ouakammathieu dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/12/2008, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo