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 :

Champs formulaire à remplir automatiquement


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Champs formulaire à remplir automatiquement
    Bonjour à tous,

    Après avoir utiliser un tuto du site sur les choix conditionnels et les listes déroulantes (sélectionner une otion et n'avoir par la suite que les options concernant ce choix), j'aimerai modifier dans un formulaire qui me sert à remplir différentes tables une liste déroulante qui, avec le code actuel ci-dessous, m'oblige à cliquer sur le critère à valider (en occurrence une année ici).
    En effet, je suis bien arrivé à faire en sorte que mes listes déroulantes n'affichent que des choix possible en fonction du choix précédents. Mais pour l'année je souhaiterai que la personne qui va remplir les tables via le formulaire de saisie n'ait même plus à cliquer sur l'année pour valider le choix et donc remplir les tables derrières tout en conservant l'affichage de celle-ci pour contrôler malgré tout les infos enregistrées dans la base.
    L'année, en effet, est conditionnée par le choix d'un autre critère en amont.

    En espérant avoir été clair dans mes explications et mon souhait, voici le code (qui fonctionne mais qui oblige encore à cliquer sur une année pour valider le choix alors qu'il n'y a finalement qu'une seule année possible en fonction du critère précédent) que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub cmbOperations_AfterUpdate()
    Dim lngIDCat   As Long
    Dim SQL        As String
     
      '' Vérifie que l'on a cliqué sur une Opération pour éviter le NULL
      If Not IsNumeric(Me!cmbOperations) Then Exit Sub
      '' Affecte la valeur de IDOperation à la variable lngIDCat
      lngIDCat = Me!cmbOperations
      '' Construit la chaîne SQL avec le métier concerné
      SQL = "SELECT TBLOperations.IDAnnee, TBLAnnee.Annee FROM TBLOperations INNER JOIN TBLAnnee ON TBLOperations.IDAnnee=TBLAnnee.IDAnnee WHERE IDOperation = " & lngIDCat & " ORDER BY TBLAnnee.Annee"
      '' Affecte la chaîne SQL à la liste des Opérations
      Annee.RowSource = SQL
      '' Déverrouille la liste des Opérations
      Annee.Enabled = True
      '' Donne le focus la liste des Opérations
      Annee.SetFocus
      '' Déroule la liste des Opérations
      Annee.Dropdown
     
    End Sub
    Merci d'avance pour vos idées et suggestions.

    PS: la base est sous Access 2007

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,
    Dans ce cas « Année » doit être une zone de texte (et non une liste).
    Dans l’événement « après m à j » du contrôle duquel tu peux dériver l’année tu ajoutes le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.année = "ce que tu as déterminé"
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci de ta réponse.

    Par contre je ne comprends ce que pourrait être "l’événement « après m à j » du contrôle duquel tu peux dériver l’année " et du coup je suis un peu perdu.
    Voici la totalité du code du formulaire en question (avec mes dernières modif infructueuses à la fin):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    Private Sub cmbMetiers_AfterUpdate()
    Dim lngIDCat   As Long
    Dim SQL        As String
     
      '' Vérifie que l'on a cliqué sur un métier pour éviter le NULL
      If Not IsNumeric(Me!cmbMetiers) Then Exit Sub
      '' Affecte la valeur de IDMetiers à la variable lngIDCat
      lngIDCat = Me!cmbMetiers
      '' Construit la chaîne SQL avec le métier concerné
      SQL = "SELECT IDSousMetiers, SousMetiers, IDMetiers FROM TBLSousMetiers WHERE IDMetiers =" & lngIDCat & " ORDER BY SousMetiers"
      '' Affecte la chaîne SQL à la liste des sous-métiers
      cmbSousMetiers.RowSource = SQL
      '' Déverrouille la liste des sous-métiers
      cmbSousMetiers.Enabled = True
      '' Donne le focus la liste des sous-métiers
      cmbSousMetiers.SetFocus
      '' Déroule la liste des sous-métiers
      cmbSousMetiers.Dropdown
     
    End Sub
     
    Private Sub cmbSousMetiers_AfterUpdate()
    Dim lngIDCat   As Long
    Dim SQL        As String
     
      '' Vérifie que l'on a cliqué sur un sous-métier pour éviter le NULL
      If Not IsNumeric(Me!cmbSousMetiers) Then Exit Sub
      '' Affecte la valeur de IDSousMetiers à la variable lngIDCat
      lngIDCat = Me!cmbSousMetiers
      '' Construit la chaîne SQL avec le sous-métier concerné
      SQL = "SELECT IDFamillePrestations, FamillePrestations, IDSousMetiers FROM TBLFamillePrestations WHERE IDSousMetiers =" & lngIDCat & " ORDER BY FamillePrestations"
      '' Affecte la chaîne SQL à la liste des famille de prestations
      cmbFamillePrestations.RowSource = SQL
      '' Déverrouille la liste des famille des prestations
      cmbFamillePrestations.Enabled = True
      '' Donne le focus la liste des famille de prestations
      cmbFamillePrestations.SetFocus
      '' Déroule la liste des famille de prestations
      cmbFamillePrestations.Dropdown
     
    End Sub
     
    Private Sub cmbFamillePrestations_AfterUpdate()
    Dim lngIDCat   As Long
    Dim SQL        As String
     
      '' Vérifie que l'on a cliqué sur une famille de prestations pour éviter le NULL
      If Not IsNumeric(Me!cmbFamillePrestations) Then Exit Sub
      '' Affecte la valeur de IDFamillePrestations à la variable lngIDCat
      lngIDCat = Me!cmbFamillePrestations
      '' Construit la chaîne SQL avec la famille de prestations concernée
      SQL = "SELECT IDPrestations, Prestations, IDFamillePrestations FROM TBLPrestations WHERE IDFamillePrestations =" & lngIDCat & " ORDER BY Prestations"
      '' Affecte la chaîne SQL à la liste des prestations
      cmbPrestations.RowSource = SQL
      '' Déverrouille la liste des prestations
      cmbPrestations.Enabled = True
      '' Donne le focus la liste des prestations
      cmbPrestations.SetFocus
      '' Déroule la liste des prestations
      cmbPrestations.Dropdown
     
    End Sub
    Private Sub cmbAffaires_AfterUpdate()
    Dim lngIDCat   As Long
    Dim SQL        As String
     
      '' Vérifie que l'on a cliqué sur une Affaire pour éviter le NULL
      If Not IsNumeric(Me!cmbAffaires) Then Exit Sub
      '' Affecte la valeur de IDAffaires à la variable lngIDCat
      lngIDCat = Me!cmbAffaires
      '' Construit la chaîne SQL avec le métier concerné
      SQL = "SELECT IDOperation, Operation, IDAffaire FROM TBLOperations WHERE IDAffaire =" & lngIDCat & " ORDER BY Operation"
      '' Affecte la chaîne SQL à la liste des Opérations
      cmbOperations.RowSource = SQL
      '' Déverrouille la liste des Opérations
      cmbOperations.Enabled = True
      '' Donne le focus la liste des Opérations
      cmbOperations.SetFocus
      '' Déroule la liste des Opérations
      cmbOperations.Dropdown
      Me.Annee = "SELECT TBLOperations.IDAnnee, TBLAnnee.Annee FROM TBLOperations INNER JOIN TBLAnnee ON TBLOperations.IDAnnee=TBLAnnee.IDAnnee WHERE IDOperation = " & lngIDCat & " ORDER BY TBLAnnee.Annee"
     
    End Sub
     
    'Private Sub cmbOperations_AfterUpdate()
    'Dim lngIDCat   As Long
    'Dim SQL        As String
     
      '' Vérifie que l'on a cliqué sur une Opération pour éviter le NULL
     ' If Not IsNumeric(Me!cmbOperations) Then Exit Sub
      '' Affecte la valeur de IDOperation à la variable lngIDCat
     ' lngIDCat = Me!cmbOperations
      '' Construit la chaîne SQL avec le métier concerné
      'SQL = "SELECT TBLOperations.IDAnnee, TBLAnnee.Annee FROM TBLOperations INNER JOIN TBLAnnee ON TBLOperations.IDAnnee=TBLAnnee.IDAnnee WHERE IDOperation = " & lngIDCat & " ORDER BY TBLAnnee.Annee"
      '' Affecte la chaîne SQL à la liste des Opérations
      'Annee.RowSource = SQL
      '' Déverrouille la liste des Opérations
      'Annee.Enabled = True
      '' Donne le focus la liste des Opérations
      'Annee.SetFocus
      '' Déroule la liste des Opérations
      'Annee.Dropdown
     
     
    'End Sub
    Par ailleurs, j'ai bien mis la liste déroulante des années en zone de texte mais je ne vois pas où ajouter ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.annee="ce que je veux"
    .
    Merci d'avance

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Tu as dit quelque part, qu'à la suite d'un choix, la date était déterminée.

    C'est dans l'événement "Après Mise à jour" du contrôle, où ce choix est exprimé que tu dois ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.année = "l'année en question"
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Effectivement, le but de ce formulaire de saisie est d'entrer des informations sur des "prix" que l'on utilise dans notre société pour créer des devis.
    Ces prix ont de multiples critères, comme la date la géolocalisation, le nom de l'entreprise proposant ce pris, le contexte...
    J'ai crée plusieurs tables qui contiennent tous ces critères et que j'appelle à travers ce formulaire pour renseigner une table "générale" de prix (TBLLibellePrix).
    Pour l'année, j'ai créé une table année avec la colonne IDAnnee en numauto et Annee en chiffre. J'ai également "TBLAffaires" qui listent le nom des affaires liées au prix et elle estégalement liée à TBLLibellePrix". Or cette table dépend d'un autre table dite"TBLOperations" dans laquelle je bloque pour chaque opération, une année (et bientôt un mois quand j'aurai trouvé une solution).
    J'ai donc quatre tables pour cette case année à afficher et les relations sont comme suit:
    la table "TBLLibellePrix" est liée à la table "TBLAnnee"
    la table "TBLOperations" est liée à la table "TBLAffaires"
    la table "TBLAffaires" est liée à la table "TBLLibellePrix"

    Etant donné tout ca, peux-tu m'aiguiller pour placer ce code?

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    J'ai de la peine à suivre.
    Tu as dit :
    L'année, en effet, est conditionnée par le choix d'un autre critère en amont.
    Quelle est ta demande : t'aider à déterminer l'année en fonction des choix antérieurs (donc de valeurs actuellement affichées dans ton formulaire) ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Oui, l'année que je veux faire apparaitre dans le formulaire qui "crée" les libellés de prix dépend du critère "Opération".
    Chaque opération est renseignée dans la table TBLOperations et chaque opération est enregistrée avec une date (année et mois) dans cette table.
    Du coup, ma demande est de savoir simplement renvoyer en affichage simple l'année qui dépend de l'opération sélectionnée.
    Ou autrement dit faire en sorte que une fois une opération choisi et qui comprend une date (année et mois), l'année et le mois s'affiche directement dans la case prévue à cet effet dans le formulaire et que par la même occasion, le libellé de prix dans la table TBLLibellePrix se renseigne automatique.
    J'arrive à faire en sorte que ce mecanismen fonctionne pour le moment avec la liste déroulante mais j'aimerai faire l'économie de cette validation pour la personne qui va remplir tous les renseignements nécessaires à la constitution d'un libellé de prix avec tous ses critères.
    Ma demande n'est pas de déterminer l'année en fonction des choix anterieurs mais de simplement l'afficher dans le formulaire de saisi.

    J'espère être suffisamment clair, je suis loin d'être un pro sous Access et je me débrouille avec les tutos du site mais évidement il faut adapter les codes pour notre besoin...

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Ma demande n'est pas de déterminer l'année en fonction des choix anterieurs mais de simplement l'afficher dans le formulaire de saisi.
    Affiche ton formulaire à l'écran et complète tous les champs sauf la date.
    <ctr> + <enter> (pour sauvegarder les données enregistrées)
    Pourrais-tu créer une requête, en te référant à tes tables (n'importe lesquelles), dont le résultat serait la date que tu souhaites.
    Si tu dois donner des critères de sélection : tu te réfères aux champs du formulaire (la syntaxe est Formulaires!NomDuFormulaire.NomDuContrôle pour t'aider utilise l'assistant (click droite sur critère et click sur Créer ...)
    Si la réponse est OUI, poste le sql de cette requête.
    C'est le début de la solution.
    je suis loin d'être un pro sous Access
    Reviens si tu ne comprends pas bien ce que je te propose.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Pourrais-tu créer une requête, en te référant à tes tables (n'importe lesquelles), dont le résultat serait la date que tu souhaites.
    Je pourrais mais ce n'est pas ce que je souhaite. L'année que je souhaite affichée dans le formulaire de saisie est renseignée en fonction de la table TBLOperation qui elle-même se réfère à la table TBLAnnee.
    Le fonctionnement jusque là est que une opération est créée avec l'année, voire le mois une fois la methode trouvée. Autrement dit lorsqu'un objet opération est créé, je sélectionne une valeur année pour l'objet opération et cette valeur est elle-même sélectionnée dans la table TBLOperation via une liste déroulante qui va chercher la valeur année dans une table TBLAnnee.
    Puis une fois qu'un objet opération est créé avec notamment l'année, je souhaite que dans le formulaire de saisi qui lui renseigne une autre table TBLLibellePrix. Et mon problème est que je n'arrive pas à faire faire cela à Access.
    Dans mon formulaire de saisie, j'arrive bien à faire apparaître la bonne année en fonction de choix de l'opération sélectionnée, cette valeur année va bien s'inscrire dans la table "récapitulative" TBLLibellePrix. Mais je n'arrive pas à "tout simplement" (LOL) faire afficher la valeur année dans le formulaire de saisie dans une case (pour contrôler les informations que l'on renseigne dans la base) sans qu'il y ait besoin de cliquer dessus pour valider la valeur annee et qu'elle s'inscrive bien tout de même dans la table récapitulative TBLLibellePrix.

    Mais je vais tenter l'assistant et je posterai le résultat dès que j'ai testé.

    Merci encore de tes réponses.

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    vois aussi ceci qui sera sans doute la suite de tes opérations

    http://www.developpez.net/forums/d97...s/#post5445135
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/02/2015, 21h46
  2. [AJAX] Formulaire, remplir automatiquement.
    Par EvilSakray dans le forum AJAX
    Réponses: 3
    Dernier message: 15/09/2011, 16h21
  3. [HTML] remplir automatiquement champs formulaire
    Par ju0123456789 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 10/04/2008, 14h53
  4. [Formulaire]Remplir champs automatiquement
    Par goutbouyo dans le forum IHM
    Réponses: 5
    Dernier message: 30/03/2007, 17h34
  5. Réponses: 14
    Dernier message: 27/10/2006, 23h15

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