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 :

Zone liste déroulante oui non [AC-2019]


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut Zone liste déroulante oui non
    Bonjour à toutes et à tous,

    J'ai un formulaire de recherche avec du code événementiel.
    Il y a une zone liste déroulante provenant de cases à cocher (oui / non)

    La zone affiche bien Oui / non.

    Nom : 22-01-2021 13_21_44-Window.png
Affichages : 99
Taille : 1,4 Ko

    Mais ça ne fonctionne pas.

    Pour que ça fonctionne, il faut que j'introduise 0 / -1 avec le clavier.

    Est il possible que la liste oui / non fonctionne sans que je doive modifier au clavier ?

    Merci pour votre aide.

    Bonne journée

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Si votre liste déroulante vient d'une table, regardez ses propriétés en mode création (disponible pour le formulaire aussi):
    Le type de la liste doit être "Oui/non" et non pas "Vrai/Faux"

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 585
    Points : 1 074
    Points
    1 074
    Par défaut
    Bonjour,

    Au lieu d'une liste déroulante j'utiliserais une case à cocher, car pas d'interprétation elle renvoie Vrai Faux ou les valeurs numériques.

    ONTAYG

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Merci à vous deux pour vos réponses.

    @ONTAYG

    C'est effectivement une piste mais ça ne fonctionne pas pour ce que je veux faire car dans certaines conditions je dois avoir les Oui et Non affichés en même temps.


    @Zekraoui_Jakani

    Merci pour cette piste qui résout en partie le problème.
    Malheureusement, ça ne fonctionne pas à tous les coups.
    Me demandez pas pourquoi.

    Le OUI ne fonctionne pas mais si j'indique -1, ça fonctionne.

    Le NON fonctionne si c'est la première "opération" que je fais, sinon je dois effacer le contenu de la zone, filtrer et ensuite sélectionner NON.

    Merci pour votre aide

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Re,

    Suite des événements concernant le problème de "filtre" avec la liste Oui / Non

    Après quelques tests, la liste fonctionne parfaitement quand j'ouvre le formulaire et que je fais la première recherche.

    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
     
    Option Compare Database
     
    Private Sub CmdFiltre_Click()
    f = ""
     
    If Not IsNull(Me.Rmoisannee) And Me.Rmoisannee <> "" Then
    f = "Date_trades LIKE ""*" & Me.Rmoisannee & "*"""
    End If
     
    If Not IsNull(Me.Rpairetrades) And Me.Rpairetrades <> "" Then
    If f <> "" Then
    f = f & " AND Paires = """ & Me.Rpairetrades & """"
    Else
    f = "Paires = """ & Me.Rpairetrades & """"
    End If
    End If
     
    If Not IsNull(Me.Rlayout) And Me.Rlayout <> "" Then
    If f <> "" Then
    f = f & " AND Nom_bot LIKE ""*" & Me.Rlayout & "*"""
    Else
    f = "Nom_bot LIKE ""*" & Me.Rlayout & "*"""
    End If
    End If
     
    If Not IsNull(Me.Rsmartrade) And Me.Rsmartrade <> "" Then
    If f <> "" Then
    f = f & " AND Smartrade_trades LIKE ""*" & Me.Rsmartrade & "*"""
    Else
    f = "Smartrade_trades LIKE ""*" & Me.Rsmartrade & "*"""
    End If
    End If
     
    If Not IsNull(Me.Rstrategie) And Me.Rstrategie <> "" Then
    If f <> "" Then
    f = f & " AND Long_Short_trades LIKE ""*" & Me.Rstrategie & "*"""
    Else
    f = "Long_Short_trades LIKE ""*" & Me.Rstrategie & "*"""
    End If
    End If
     
     
    Debug.Print f
     
    Me.Filter = f
    Me.FilterOn = True
    End Sub
    Et voici le résultat lors de la première recherche (que ce soit Oui ou Non que je sélectionne), ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Smartrade_trades LIKE "*-1*"
    Smartrade_trades LIKE "*0*"
    Mais si je fais un recherche supplémentaire, ça ne fonctionne plus.

    Voici les résultats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Smartrade_trades LIKE "*Vrai*"
    Smartrade_trades LIKE "*Faux*"
    Je n'arrive pas à comprendre pourquoi lors de la première recherche, il transforme bien en -1 / 0 et par la suite, il passe par Vrai / Faux

    Merci d'avance pour votre aide.

  6. #6
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Pourquoi pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Smartrade_trades = True
    Smartrade_trades = False

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Merci pour votre réponse mais je ne comprends pas ce que vous me conseillez.


    Les 2 derniers code sont les résultats affiché par la procédure événementielle.

    Que me conseillez vous de modifier ?

    Merci

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour
    Citation Envoyé par charlieda Voir le message
    Que me conseillez vous de modifier ?
    les champs Vrai/Faux sont des booléens, donc des numériques, il n'est pas conseillé d'utiliser LIKE avec ce type de données à réserver de préférence aux recherches sur une partie des champs de type texte, il est préférable d'utiliser les opérateurs de comparaison (= < >)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If f <> "" Then
    f = f & " AND Smartrade_trades =" & Me.Rsmartrade
    Else
    f = "Smartrade_trades =" & Me.Rsmartrade
    End If
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Bonjour tee_grandbois,

    Merci pour votre intervention. Le problème reste le même.

    Quand j'ouvre le formulaire et que je sélectionne Oui ou Non, cela fonctionne. J'ai la première fois sélection Oui, ensuite fermer le formulaire, réouverture, sélection Non, cela fonctionne mais pas pratique.

    Voici les codes débug.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Smartrade_trades =-1
    Smartrade_trades =0
    Par contre, si je ne ferme pas le formulaire. La première fois, OK ca fonctionne et ensuite, ça ne fonctionne plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Smartrade_trades =-1
    Smartrade_trades =Faux
    Et maintenant, j'ai une fenêtre qui s'affiche dans laquelle, si j'indique 0 ou -1, cela fonctionne mais toujours pas pratique.

    Nom : 23-01-2021 20_45_33-Window.png
Affichages : 92
Taille : 3,8 Ko

    Je n'ai pas ce problème de devoir fermer et réouvrir avec les autres options de filtre de ce formulaire.

    Merci pour votre aide.

  10. #10
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Je soupçonne un problème structurel dans votre BD (tables, types de variables, index, ...)

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Quand j'ouvre le formulaire et que je sélectionne Oui ou Non, cela fonctionne. J'ai la première fois sélection Oui, ensuite fermer le formulaire, réouverture, sélection Non, cela fonctionne mais pas pratique.
    Bizarre comme comportement...
    par contre, il faut savoir que toutes les valeurs des colonnes de listes déroulantes sont transformées en texte ...
    Pour autant, j'aimerai bien voir le contenu de la liste déroulante: pas une impression d'écran mais le SQL, la requête ou la table de la propriété "Contenu".
    Je n'ai pas ce problème de devoir fermer et réouvrir avec les autres options de filtre de ce formulaire.
    oui car les autres options se sont des champs textes non interprétés. Le champ Oui/Non, il faut l'interpréter dans la langue du logiciel utilisé (c'est à dire l'anglais US) d'autant plus que VBA a tendance à retraduire dans la langue locale ce qui complique l'utilisation des booléens si on utilise les constantes True et False.
    Essaie ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Not IsNull(Me.Rsmartrade) And Me.Rsmartrade <> "" Then
        if Smartrade_trades = "Oui"   '<== ou "True" ou "-1" cela dépendra du Contenu de Rsmartrade comme demandé plus haut
     	f = f & iif(f <> ""," AND ","") & " Smartrade_trades = True"
        else
            f = f & iif(f <> ""," AND ","") & " Smartrade_trades = False"
        end if
    end if
    Si cela ne fonctionne toujours pas essaie de remplacer True par -1 et False par 0
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Bonjour tee_grandbois,

    Merci pour ton aide et ton interventions.

    Voici le code SQL du contenu de la liste (le format de cette liste est Oui/Non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Req_trades_rmc.Smartrade_trades
    FROM Req_trades_rmc
    GROUP BY Req_trades_rmc.Smartrade_trades;
    Dans la table, le champ est Oui/Non et en liste de choix, c'est une case à cocher.

    Concernant ta solution proposée, elle ne fonctionne pas. J'ai toujours le même résultat Non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Smartrade_trades = 0
     Smartrade_trades = 0
    J'ai essayé le code avec True, Oui, -1 et remplacer les True et False par -1 et 0
    J'ai également ajouté un Then à la ligne 2 sinon j'avais une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Not IsNull(Me.Rsmartrade) And Me.Rsmartrade <> "" Then
        If Smartrade_trades = "True" Then
        f = f & IIf(f <> "", " AND ", "") & " Smartrade_trades = -1"
        Else
            f = f & IIf(f <> "", " AND ", "") & " Smartrade_trades = 0"
        End If
    End If
    Toujours le même résultat qui prend en compte les Non.


    Merci encore pour ton aide.

    Bon dimanche

  13. #13
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Je soupçonne un problème structurel dans votre BD (tables, types de variables, index, ...)
    Bonjour,

    Je vous remercie pour votre réponse.

    J'avoue ne pas savoir ce que cela pourrait être. Même la proposition de tee_grandbois bloque : donc oui j'imagine une erreur dans ma base mais alors ......

    Merci

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    J'ai essayé le code avec True, Oui, -1 et remplacer les True et False par -1 et 0
    sans oublier les guillemets, j'espère ? "True", "Oui", "-1"
    qu'est-ce qu'on récupère dans la variable avec MsgBox Me.Rsmartrade ou Debug.Print Me.Rsmartrade ?
    J'ai également ajouté un Then à la ligne 2 sinon j'avais une erreur.
    oui, désolé c'est un oubli de ma part ...

    Voici le code SQL du contenu de la liste (le format de cette liste est Oui/Non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Req_trades_rmc.Smartrade_trades
    FROM Req_trades_rmc
    GROUP BY Req_trades_rmc.Smartrade_trades;
    et que contient la requête Req_trades_rmc ? est-ce que Smartrade_trades subit une transformation format ou autre?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  15. #15
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Bonjour tee_grandbois,

    Merci pour ta réponse.

    Voici le code complet

    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
    Option Compare Database
     
    Private Sub CmdFiltre_Click()
    f = ""
     
    If Not IsNull(Me.Rmoisannee) And Me.Rmoisannee <> "" Then
    f = "Date_trades LIKE ""*" & Me.Rmoisannee & "*"""
    End If
     
    If Not IsNull(Me.Rpairetrades) And Me.Rpairetrades <> "" Then
    If f <> "" Then
    f = f & " AND Paires = """ & Me.Rpairetrades & """"
    Else
    f = "Paires = """ & Me.Rpairetrades & """"
    End If
    End If
     
    If Not IsNull(Me.Rlayout) And Me.Rlayout <> "" Then
    If f <> "" Then
    f = f & " AND Nom_bot LIKE ""*" & Me.Rlayout & "*"""
    Else
    f = "Nom_bot LIKE ""*" & Me.Rlayout & "*"""
    End If
    End If
     
    If Not IsNull(Me.Rsmartrade) And Me.Rsmartrade <> "" Then
        If Smartrade_trades = "True" Then
        f = f & IIf(f <> "", " AND ", "") & " Smartrade_trades = -1"
        Else
            f = f & IIf(f <> "", " AND ", "") & " Smartrade_trades = 0"
        End If
    End If
     
    If Not IsNull(Me.Rstrategie) And Me.Rstrategie <> "" Then
    If f <> "" Then
    f = f & " AND Long_Short_trades LIKE ""*" & Me.Rstrategie & "*"""
    Else
    f = "Long_Short_trades LIKE ""*" & Me.Rstrategie & "*"""
    End If
    End If
     
     
    Debug.Print Me.Rsmartrade
     
    Me.Filter = f
    Me.FilterOn = True
    End Sub
    J'ai modifié la ligne

    par le code que tu proposes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Me.Rsmartrade

    Et voici les résultats lorsque je modifie la zone Smartrade_trades

    Première manipulation post ouverture du formulaire, je choisis Oui, ensuite 2 fois Non et le dernier à nouveau Oui (je précise que le filtre affiche uniquement les Non smartrades et ça ne change plus peu importe que je sélection Oui ou Non)

    -1
    Faux
    Faux
    Vrai
    Ensuite je ferme le formulaire, j'ouvre, je choisis Non, il affiche 0 (et là le filtre affiche les bonnes données)
    Ensuite je choisis Oui, il affiche Vrai (et le filtre ne fonctionne pas)

    Pour résumé, dès que je filtre que ce soit par Oui ou Non, il m'affiche les données du Non.
    Il me semble que le Oui ne fonctionne pas dans tous les cas : que ce soit en premier choix à l'ouverture du formulaire ou après.

    En troisième opération, je viens de choisir Non et le debug n'affiche rien mais il a bien sauté une ligne.

    0
    Vrai
    Faux


    Vrai
    Concernant Req_trades_rmc, Smartrade_trades a un format Oui/Non sans rien subir comme modification.


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Tbl_trades.N°_trades, Tbl_trades.N°_bots_trades, Tbl_nom_bots.Nom_bot, [Paire_trade] & [Paire_bot_details] AS Paires, Tbl_trades.Date_trades, Format([Date_trades],"mm/yyyy") AS Mois_annee, Tbl_trades.Smartrade_trades, Tbl_trades.Long_Short_trades, Tbl_trades.ID_bot_trades, Tbl_trades.Pnl_trades, Tbl_trades.[%bot_trades], Tbl_trades.[%bt_trades], Tbl_trades.Commentaires, Tbl_trades.Remarques
    FROM (Tbl_nom_bots RIGHT JOIN Tbl_trades ON Tbl_nom_bots.N°_bot = Tbl_trades.N°_bots_trades) LEFT JOIN Tbl_bots_details ON Tbl_nom_bots.N°_bot = Tbl_bots_details.N°_bot_bots_details;


    Merci beaucoup pour ton aide.

    Bonne journée

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    je ne vois absolument pas l'utilité de cette requête qui ne peut renvoyer que 2 valeurs ... Il me semble que ce serait vraiment plus simple de remplacer cette liste déroulante soit par une case à cocher indépendante avec la propriété "Triple état" à oui (qui permet d'avoir les 3 valeurs Oui, Non, Nul, le nul permettant la non sélection ), soit par un groupe d'options. A là limite, on pourrait même renseigner la liste déroulante avec une liste de valeurs ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  17. #17
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Bonjour tee_grandbois,

    Je te remercie pour ta réponse et pour cette solution.

    Effectivement, je vais faire un Oui / Non sous forme de liste déroulante, ça sera la même chose à l'usage.

    Retour d'expérience dans la matinée.

    Merci

  18. #18
    Membre régulier
    Inscrit en
    Décembre 2013
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 356
    Points : 91
    Points
    91
    Par défaut
    Voilà, ça fonctionne en mettant une zone liste plutot qu'un Oui / Non

    Plus la moindre erreur.

    Un grand merci pour ton aide.

    Bonne journée

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

Discussions similaires

  1. zone liste déroulante infopath datasource
    Par ahmedmido dans le forum SharePoint
    Réponses: 0
    Dernier message: 07/04/2008, 18h15
  2. zone liste déroulante
    Par imeys dans le forum IHM
    Réponses: 4
    Dernier message: 19/09/2007, 19h02
  3. Réponses: 5
    Dernier message: 11/04/2007, 09h20
  4. [VB.NET].saisie progressive dans zone liste déroulante
    Par LE VIEUX dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/09/2006, 13h21
  5. Réponses: 3
    Dernier message: 20/02/2006, 18h32

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