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 :

Améliorer une liste déroulante


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut Améliorer une liste déroulante
    Bonjour,

    Mon problème est le suivant : je suis sur un formulaire indépendant . J'ai un sous-formulaire créé à partir d'une table employé.

    Sur le formulaire principal, j'ai mis des objets listes déroulantes qui me permettent de filtrer le sous-formulaire. Voici un exemple du code :

    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
    Dim strFiltre As String
     
    'Filtre sur la N° de service
    On Error Resume Next
    strFiltre = ""
    If Not IsNull(Me.FiltreParService) Then
        strFiltre = "([N__SCE]='" & Me.FiltreParService & "')"
    End If
     
    'Filtre sur le CP/Ville
    If Not IsNull(Me.FiltreParCPVille) Then
        If strFiltre <> "" Then strFiltre = strFiltre & " AND "
        strFiltre = strFiltre & "([CP_VILLE]='" & Me.FiltreParCPVille & "')"
    End If
     
    'Filtre sur la date
    If Not IsNull(Me.FiltreParDate) Then
        If strFiltre <> "" Then strFiltre = strFiltre & " AND "
        strFiltre = strFiltre & "([DATE_NAIS]=#" & Format(Me.FiltreParDate, "mm/dd/yyyy") & "#)"
    End If
     
    'Filtrer le formulaire
    With Me.frmSaisiePersonnel.Form
        .Filter = strFiltre
        .FilterOn = True
    End With
    Tout marche bien. Dans la liste déroulante qui m'affiche les n° de service, je voudrais rajouter quelquechose qui me permette de choisir d'afficher tous les services comprise entre 100 et 200 par exemple. Pour l'instant, je ne peux afficher que le service 100 mais pas une fourchette de service.
    Le problème est que je ne veux pas systématiquement avoir à remplir un mini et un max (requête paramétrée). Desfois, je veux juste le service 100.

    Est-il possible de faire quelquechose qui ressemble au filtre personnalisé d'excel ? Je choisirais dans ma liste déroulante non pas un service mais "personnaliser" qui m'ouvrirait une fenêtre afin que je puisse dire "je veux tous les services qui ont un n° compris entre 100 et 200".

    Merci de votre aide.

  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 009
    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 009
    Points : 24 585
    Points
    24 585
    Par défaut
    Bonjour et bienvenue !

    Tu peux toujours créer 2 controles et tester si le 2ème est rempli, dans ce cas là tu utilise la clause SQL Between. Dans le cas contraire une simple égalité.

    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
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Merci pour le tuyau. Est-ce que ceci conviendrait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Filtre sur la N° de service
    On Error Resume Next
    strFiltre = ""
    If Not IsNull(Me.FiltreParService) Then
        If Not IsNull(Me.FiltreParService2) Then
        strFiltre = "([N__SCE]BETWEEN'" & Me.FiltreParService & " and " & Me.FiltreParService2 & "')"
        Else: stFiltre = "([N_SCE]='" & Me.FiltreParService & "')"
        End If
    End If

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 009
    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 009
    Points : 24 585
    Points
    24 585
    Par défaut
    ça m'a l'air tout bon.

    Prévoir peut-être la suppression rapide du controle2 en cas d'interrogation multiple, il n'y a pas plus désagréable pour l'utilisateur d'être obligé de supprimer le contenu des controles.

    Vu ton code je ne pense pas que tu ais du mal pour cela.
    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

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Ca a l'air tout bon mais ça marche que pour le premier. Il ne voit pas ce que je choisis dans le 2ème ..

  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 009
    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 009
    Points : 24 585
    Points
    24 585
    Par défaut
    Avec quelques espaces bien placé et sans les cotes en moins cela devrait fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFiltre = "([N__SCE] BETWEEN " & Me.FiltreParService & " and " & Me.FiltreParService2 & ")"
    oups ! c'est du texte ton N_SCE ?
    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
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Ok c'est ma faute. J'étais persuadé d'avoir le champ n°service en numérique et il était en texte. Tout marche bien désolrmais.

    Merci beaucoup.

    Et pour vider les chmaps tu préconises un bouton qui mettent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FiltreParService = ""
    FiltreParService2 = ""
    ...

    Ca va pas vider le contenu de la liste déroulante ?

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 009
    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 009
    Points : 24 585
    Points
    24 585
    Par défaut
    Citation Envoyé par fpecastaing
    Et pour vider les chmaps tu préconises un bouton qui mettent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FiltreParService = ""
    FiltreParService2 = ""
    ...

    Ca va pas vider le contenu de la liste déroulante ?
    non pas de risque.
    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

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    J'ai écrit ceci sur un bouton "tout afficher" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Commande9_Click()
     
    'Je désactive le filtre
    Me.frmSaisiePersonnel.Form.FilterOn = False
     
    'Je mets les champs des listes déroulantes à blanc
    Me.FiltreParService = ""
    Me.FiltreParService2 = ""
    Me.FiltreParCPVille = ""
    Me.FiltreParDate = ""
    End Sub
    Le fait d'enlever le filtre marche très bien. Les champs se mettent à blanc aussi.
    Mais si je refais un filtre en choisissant un service, il m'affiche 0. Comme s'il n'y avait plus rien.
    Il faut que je quitte le formulaire et que je refasse un filtre pour que ça marche, comme s'il rechargé le contenu des listes déroulantes, d'où ma question du dessus.

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 009
    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 009
    Points : 24 585
    Points
    24 585
    Par défaut
    Essaye un me.requery à la fin de ta procédure d'annulation du filtre.

    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

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Non cela ne fonctionne pas, il me remet que des résultats équivalents à 0.

Discussions similaires

  1. Récupération de la valeur visible d'une Liste déroulante
    Par Yaz dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/10/2004, 12h01
  2. Rajouter "Tous" dans une Liste Déroulante
    Par smirold dans le forum IHM
    Réponses: 7
    Dernier message: 25/10/2004, 13h29
  3. Réponses: 2
    Dernier message: 16/10/2004, 14h33
  4. Problème pour positionner une liste déroulante
    Par ouckileou dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/09/2004, 01h05
  5. valeur d'une liste déroulante
    Par leeloo076 dans le forum ASP
    Réponses: 7
    Dernier message: 15/04/2004, 16h11

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