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 :

Champ avec semi-automatique


Sujet :

IHM

  1. #1
    Membre à l'essai
    Femme Profil pro
    Archiviste médicale
    Inscrit en
    Octobre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Archiviste médicale
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2019
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Champ avec semi-automatique
    Bonjour,

    J'essaie de créer un formulaire ayant un champ avec saisie semi-automatique. J'ai trouvé plusieurs rubriques et tutoriels à ce sujet, mais ils concernent tous l'extraction d'une donnée du formulaire alors que ma saisie semi-automatique doit se faire à partir d'une requête qui extrait les données d'une autre table que celle de mon formulaire.

    En gros, il s'agit d'un dossier patient pour un service préhospitalier. Si le patient a un suivi médical ou psychologique actif, l'utilisateur doit indiquer où le patient est suivi et le nom du professionnel à son dossier. J'ai une table qui contient les principaux centre médicaux et services psychosociaux de la région avec leurs coordonnées. Les suggestions de la saisie semi-automatique doit donc extraire les données de la requête basée sur cette table.

    Je sais que je dois créer une zone de liste et je n'ai pas de difficulté à la rendre visible lorsque l'utilisateur fait la saisie et la faire disparaître par la suite. Mon problème est vraiment l'affichage des résultats pertinents selon la saisie faite par l'utilisateur.

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Qu'est ce que tu appelles "résultats pertinents" ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Femme Profil pro
    Archiviste médicale
    Inscrit en
    Octobre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Archiviste médicale
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2019
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Champ avec semi-automatique
    Les résultats pertinents sont ceux qui correspondent à la saisie partielle faite par l'utilisateur.

    Pour le moment, dans mon formulaire, j'ai :<
    • Le champ "NomOrganisme" qui est un champ texte où l'utilisateur doit saisir le nom du centre médical où l'usager est suivi (hôpital, clinique ...)
    • Une zone de liste nommée "ListeOrganismes" qui doit afficher les résultats correspondant à la saisie partielle faite par l'utilisateur. Cette liste doit contenir le résultat de ma requête "ReqListeOrganismes" tout en adaptant les suggestions lorsque l'utilisateur ajoute de nouveaux caractères.



    Merci

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 088
    Points : 5 204
    Points
    5 204
    Par défaut
    Bonjour,

    Voici un petit exemple qui correspond peut-être à ton besoin :
    Nom : Capture.JPG
Affichages : 102
Taille : 24,7 Ko
    L'utilisateur sélectionne une famille (et une sous famille) dans les champs x_f et x_sf et/ou saisit un mot clé dans le champ mot_cle
    Cela permet de filtrer le dernier champ du bas "lc" sur les consommables qui correspondent à ses critères grâce à la procédure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub lc_Enter()
    If Not Mode_debug Then On Error GoTo err
     
    lc.RowSource = "SELECT 1*a.id_consommable as consommable, f.libelle as famille, sf.libelle as sous_famille, a.libelle, a.ref as reference, s.qte_stock as stock, u.libelle as unite, round(s.dern_prix_achat,2) as prix" _
    & " FROM (((consommable a inner join stock_cons s on a.cd_consommable=s.cd_consommable) inner join unite u on u.cd_unite=s.cd_unite_stock)" _
    & " inner join cons_famille f on f.cd_cons_famille=a.cd_cons_famille) inner join cons_ss_famille sf on sf.cd_cons_ss_famille=a.cd_cons_ss_famille " _
    & "WHERE stock=1 and a.inactif=0" & IIf(mot_cle = "", "", " and a.ref like '*" & mot_cle & "*' or a.libelle like '*" & mot_cle & "*'") _
    & IIf(x_f.Column(1) > 0, " and a.cd_cons_famille=" & x_f.Column(1), "") & IIf(x_sf.Column(1) > 0, " and a.cd_cons_ss_famille=" & x_sf.Column(1), "") _
    & " order by 1;"
    Exit Sub
     
    err: Call message("Erreur " & err.Number & "/" & Erl & " dans DSM.lc : " & err.description)
    End Sub
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre à l'essai
    Femme Profil pro
    Archiviste médicale
    Inscrit en
    Octobre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Archiviste médicale
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2019
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Merci, mais ce n'est pas ce que je cherche. Je veux que la liste se modifie à chaque caractère ajouté par l'utilisateur. Dans l'exemple ci-dessous, je souhaite que tout ce qui ne contient pas les lettres "cl" soit éliminé de la liste de choix. Nous ne devrions donc plus voir "CHUM" dans la liste. Exactement comme lorsque nous faisons une recherche sur Google. Il s'agirait donc probablement d'un code VBA sur changement.

    Nom : Formulaire.png
Affichages : 74
Taille : 11,2 Ko
    Images attachées Images attachées  

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Il faut utiliser ce type de montage :

    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
     
    Option ...
    dim strlist as string
     
    ...
     
    Private Sub Modifiable0_KeyUp(KeyCode As Integer, Shift As Integer)
     
    If KeyCode < 64 Or KeyCode > 123 And Not KeyCode = 32 Then
       strlist = ""
       Me.Modifiable0.RowSource = "SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects;"
       Me.Modifiable0.Text = ""
    Else
       strlist = strlist & Chr(KeyCode)  'ajoute la touche pressée
       Me.Modifiable0.RowSource = "SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects where MSysObjects.Name like """ & strlist & "*"";"
    End If
     
    End Sub
    Attention ce n'est pas parfait il faut l'affiner.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre à l'essai
    Femme Profil pro
    Archiviste médicale
    Inscrit en
    Octobre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Archiviste médicale
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2019
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Zone de liste
    Merci.

    J'ai finalement réussi à extraire et filtrer les données avec les codes suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Organisme_Change()
    If Me.ListeOrganismes.Visible = False Then Me.ListeOrganismes.Visible = True
    ListeOrganismes.RowSource = "SELECT DISTINCT Organisme FROM CoordonneesReseauSante WHERE Organisme LIKE '*" & Organisme.Text & "*'"
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ListeOrganismes_Click()
    Me.Organisme.SetFocus
    If Me.ListeOrganismes.Visible = True Then Me.ListeOrganismes.Visible = False
    Me.Organisme = Me.ListeOrganismes
    End Sub

    "ListeOrganismes" est ma zone de liste et "Organisme" est mon champ de saisie (zone de texte).

    L'utilisateur doit pouvoir saisir un centre médical qui ne se trouve pas dans la liste. La liste contient les principaux centres de la région, donc ceux qui reviendront le plus souvent, mais elle n'est pas complète. Le but est principalement d'éviter que l'utilisateur ait à saisir les coordonnées de ces centres.

    Je souhaite que la liste disparaisse si la zone de liste est vide (donc, s'il n'y a aucun résultat correspondant à la saisie de l'utilisateur). Dans mon code Private Sub Organisme_Change(), j'ai essayé d'ajouter l'un des codes ci-dessous, mais sans succès. Ma liste n'apparaît plus lorsque je mets l'un de ces codes à la fin du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If IsEmpty(Me.ListeOrganismes) Then Me.ListeOrganismes.visible =False
    If IsNull(Me.ListeOrganismes) Then Me.ListeOrganismes.visible =False
    If Me.ListeOrganismes = "" Then Me.ListeOrganismes.visible =False
    Bien que je ne les ai pas mis ci-dessus, j'ai d'autres codes VBA qui font disparaître ma liste et ceux-ci fonctionnent. Il ne me reste qu'à trouver comment faire disparaître la liste lorsque celle-ci est vide.

    Merci.

Discussions similaires

  1. champ avec incrémentation automatique
    Par pasb71 dans le forum VBA Access
    Réponses: 12
    Dernier message: 07/10/2011, 10h24
  2. champ avec date automatique
    Par Daniela dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2011, 08h53
  3. Comment descendre d'une ligne dans un champ avec filtre automatique
    Par frolland46 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/06/2008, 20h15
  4. Réponses: 2
    Dernier message: 02/05/2007, 14h47
  5. Problème avec la saisie semi-automatique d'internet explorer
    Par haltabush dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 07/02/2006, 13h23

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