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 :

Affecter le contenu d'un champ Source Contrôle dans une table


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Affecter le contenu d'un champ Source Contrôle dans une table
    Bonjour,

    J'ai un formulaire (F_pilotage), lié à la table T_pilotage, dans lequel j'ai réussi à récupérer dans une zone de texte non liée à la table (nb_total) le sous-total d'un autre formulaire (F_MEN_travaux) en affectant ce code dans les propriétés Source Contrôle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =F_MEN_travaux.Formulaire!txt_f_nb_total
    Le problème, c'est comment affecter la valeur de nb_total au champ nb_total_table de la table T_pilotage ?

    Merci d'avance pour vos contributions.

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Amenez dans votre formulaire le champ nb_total_Table qui lui est lié à la table T_Pilotage si j'ai bien compris.

    Sur une propriété évènement de ce champ par exemple Réception du focus mettez le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!nb_total_Table = Me!nb_total
    et le contenu de nb_total sera inscrit dans la table t_Pilotage chaque fois que le champ recevra le focus.
    On peut utiliser la macro DéfinirValeur également pour faire ce genre d'opération.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Bonjour rjamin et merci pour ta réponse,

    Sur ta proposition, on est obligé de passer sur la case pour mettre à jour son contenu.

    J'aurais plutôt utilisé le mode Dirty ou Change sur nb_total.

    Le problème est que Dirty me met un message d'erreur et que Change ne fait rien.

    Au final, je cherche même à m'affranchir de la zone texte nb_total pour écrire un code pour calculer le sous-total directement dans nb_total_Table dès validation de l'enregistrement dans le sous formulaire F_MEN_travaux.

    En gros, comment s'écrit en code VBA la commande suivante, et sur quel évenement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =F_MEN_travaux.Formulaire!txt_f_nb_total
    Si vous avez des solutions, je suis preneur !
    @+

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Re,

    Il y a d'autres évènements que Réception focus qui peuvent être utilisés.


    Un peu de lecture pourrait vous aidez peut-être.


    http://loufab.developpez.com/tutorie...pelformulaire/

    Bon travail

  5. #5
    jojo5650
    Invité(e)
    Par défaut
    Insèrez un champs dans le "pied de page" de ton sous formulaire F_MEN_travaux.
    Donnez lui un nom du genre total_xxx , dans control source mettez Puis dans le formulaire principal cree un champs xxxx .
    Pour ces deux controles mettre 0 dans la propriété "valeur par défaut".

    Ouvre les propriétés de ce champs , onglet données,visualise la propriété source (la première en haut) ; clique sur les "..."( à droite sur fond gris) pour ouvrir le générateur d'expressions. Sélectionne formulaires, formulaires chargés, ton formulaire principal, puis F_MEN_travaux et tu devrais voir dans la liste le champs que tu a créé en 1 double click dessus et valide ok.
    Ouvre ton formulaire; et cela devrait fonctionner
    Dernière modification par loufab ; 20/10/2010 à 20h30. Motif: balises de code

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Bonjour et merci pour vos contributions.

    jojo5650, j'avais déjà le sous-total (txt_f_nb_total) en pied de page du sous-formulaire F_MEN_travaux et aussi réussi à lire sa valeur dans une zone de texte (nb_total) dans le formulaire principale F_pilotage avec la source contrôle, le problème c'est que ce champ n'est pas lié à la table principale, qui est la source du formulaire principal.

    Comment changer directement le contenu de ma zone de texte liée à ma table principale, sachant que cette valeur dépend du sous-total d'un sous-formulaire ?

    La finalité est de réaliser une fusion et publipostage avec Word, et j'ai besoin de la valeur du sous-total...

    Merci !

  7. #7
    jojo5650
    Invité(e)
    Par défaut
    Si je comprend bien,
    Tu as un formulaire principal, un sous formulaire et dans ce 1er sous formulaire un 2 ème formulaire?
    J'attends ta réponse.
    Ce serait plus clair si je pouvais voir une copie d'écran de ton formulaire.

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Bonsoir,

    J'ai mis une capture ici:


    En gros, j'ai:

    Une table:
    T_pilotage, comprenant un champ nb_total_table

    Un formulaire principal, lié à la table T_pilotage:
    F_pilotage, comprenant le champ nb_total_table (lié à T_pilotage) et un champ nb_total qui récupère le sous total de txt_f_nb_total avec en source contrôle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =F_MEN_travaux.Formulaire!txt_f_nb_total
    Une table:
    T_menuiserie

    Un sous-formulaire lié à la table T_menuiserie:
    F_MEN_travaux, comprenant en pied de page un champ de calcul sous total txt_f_nb_total, permettant de connaitre le nombre total de menuiseries.


    Je souhaite tout simplement modifier directement la valeur nb_total_table lors de modification du sous-formulaire.

    A noter que dans l'exemple de l'image, je n'ai qu'un type de menuiserie dans le sous formulaire, mais que je peux en avoir beaucoup plus.

    Merci

  9. #9
    jojo5650
    Invité(e)
    Par défaut
    J'ai vu l'écran
    Si je comprend bien, tu veux, lorsque tu modifie dans le menu déroulant le nombre de menuiserie, que ce nombre soit dans le texte au dessus du formulaire de données

    La procédure que j'ai décrite devrait fonctionner, je n'ai probablement pas utiliser les termes adéquat.

    Peux tu poser cette database( en fichier zip) avec des données fictives ainsi moi ou d'autres pourrons t'aider plus aisément.
    Je promet à tout le monde de détailler la réponse si je trouve cette solution.
    jojo5650

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    J'ai mis le fichier (très épuré) ici:

    http://jokair.free.fr/test.zip

    Je cherche, dans le formulaire F_saisie, à ce que le nombre de menuiseries soit directement entré dans le champ diag_travaux_nb_menuiseries, et pas seulement dans nb_m_travaux.

    Merci.

  11. #11
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour,

    Est-ce vraiment nécessaire de stocker une donnée calculée ?

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Tofalu, je ne comprend pas ta remarque .

    Pour moi la nécessité de stocker servira à réaliser des fusions et publipostage pour la réalisation de rapports Word.

    C'est ce qui explique l'objet de ma question.

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    La fusion se fera sur une requête qui calculera cette donnée à la volée. A priori, à moins que le calcul soit relativement complexe, il est inutile de la stocker.

  14. #14
    jojo5650
    Invité(e)
    Par défaut
    teste ce que je viens de poser
    Mais je partage aussi ce que d'autres t'on dis.
    Pour le publipostage tu partira quand même d'une requête ou d'une table.
    Mais c'est toi décide, ici tu as les 2.
    ce que j'ai ajouté c'est ceci pour les nombres
    ce qui impose une mise à jour du formulaire actif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub menuiserie_nombre_AfterUpdate()
       SendKeys "+{F9}", True
    End Sub
    l'application modifiée est posée sur le site
    Fichiers attachés Fichiers attachés

  15. #15
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    jojo5650, je me suis servi de ton code... enfin juste le déclenchement de l'évenement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub menuiserie_nombre_AfterUpdate()
    Me.Parent.diag_travaux_nb_menuiseries.Value = Me.txt_f_nb_total.Value
    End Sub
    Sinon, question qui n'a rien à voir:

    J'ai des commandes identiques quand j'initialise un formulaire (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Form_current()
    ) et par exemple quand après mise à jour d'une ComboBox (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub diag_travaux_AfterUpdate()
    )

    Que faut-il faire pour éviter de taper 2 fois le code ?
    Sachant que certaine fonctions sont identiques pour un formulaire et un sous-formulaire ?

    D'avance merci à tous !

Discussions similaires

  1. [AC-2003] Copier le contenu d'un contrôle dans une table
    Par alainb dans le forum IHM
    Réponses: 4
    Dernier message: 01/01/2010, 09h53
  2. Réponses: 5
    Dernier message: 13/11/2009, 09h29
  3. Insertion d'un champ en décalé dans une table access
    Par kizou dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/04/2009, 11h04
  4. Comment obtenir un champs auto incrémenté dans une table DBase IV ?
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/12/2007, 13h55
  5. Réponses: 3
    Dernier message: 22/04/2006, 06h05

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