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 :

Recherche de valeurs partielles contenues dans un champ sur un sous-formulaire [AC-2013]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur Généraliste
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Recherche de valeurs partielles contenues dans un champ sur un sous-formulaire
    Bonsoir

    Désespérant de mes recherches (peut être mal faites, même si cela fait 3,4 heures que j'y suis), je viens solliciter la communauté.

    Je souhaiterais obtenir les enregistrements contenant une partie des valeurs.
    Exemple : je tape dans ma zone de texte "exe", et, en cliquant sur un bouton, j'obtiens dans mon sous-formulaire la liste de tous les enregistrement contenant "Exe" dans le champ NumAffaire, comme "exemple" ou "pré-exemple".

    En recherchant, j'ai deux pistes et j'y suis presque je pense. La première :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub btn_RechercheAffaire_Click()
    sql = "SELECT * FROM ListeAffaires_Loc WHERE NumAffaire Like ""*" & Me.txt_RechercheAffaire & " *"";"
    Me.SF_ListeAffaires_Loc.Form.Filter = "cstr(NumAffaire) = sql"
    Me.SF_ListeAffaires_Loc.Form.FilterOn = True
    End Sub
    Elle me permet de filtrer directement le résultat grâce aux deux dernières lignes, mais je crois que c'est sur la première, ou entre la première et la deuxième que ça ne fonctionne pas : on me demande la valeur du paramètre de sql.

    La seconde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub btn_RechercheAffaire_Click()
    Set rs = Me.SF_ListeAffaires_Loc.Form.Recordset
    criteres = "NumAffaire =  """ & Me.txt_RechercheAffaire & """"
    Call rs.FindNext(criteres)
    Me.SF_ListeAffaires_Loc.SetFocus
    Set rs = Nothing
    End Sub
    Elle fonctionne uniquement si je rentre un numéro d'affaire écrit correctement, mais ne filtre pas dessus, elle me l'indique.

    Je ne suis pas une pointe en VBA ouais...
    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La syntaxe est probablement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.SF_ListeAffaires_Loc.Form.Filter = "NumAffaire Like ""*" & Me.txt_RechercheAffaire & " *"""
    Me.SF_ListeAffaires_Loc.Form.FilterOn = True
    Par contre es-tu sur que le champ dans sur lequel tu veux faire ta sélection est NumAffaire (ça évoque un nombre pas un texte).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 635
    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 635
    Points : 14 606
    Points
    14 606
    Par défaut
    bonsoir,
    la première solution me semble la plus appropriée, après correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub btn_RechercheAffaire_Click()
    Dim sql as string
    sql = "SELECT * FROM ListeAffaires_Loc WHERE NumAffaire Like ""*" & Me.txt_RechercheAffaire & " *"";"
    Me.SF_ListeAffaires_Loc.Form.RecordSource = sql
    End Sub
    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 ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Un petit exemple qui répond à ta problématique
    Bonne continuation
    Fichiers attachés Fichiers attachés
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur Généraliste
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Tests en cours
    Super !

    Je teste tout ça et je reviens vers vous en début d'après-midi pour vous faire un récap' ;-)

    Et pour répondre à Marot r, il s'agit d'une combinaison alphanumérique donc pas uniquement des nombres.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur Généraliste
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Re tous!

    Citation Envoyé par marot_r Voir le message
    Bonjour.

    La syntaxe est probablement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.SF_ListeAffaires_Loc.Form.Filter = "NumAffaire Like ""*" & Me.txt_RechercheAffaire & " *"""
    Me.SF_ListeAffaires_Loc.Form.FilterOn = True
    Par contre es-tu sur que le champ dans sur lequel tu veux faire ta sélection est NumAffaire (ça évoque un nombre pas un texte).

    A+
    --> C'est peut être ce qui se rapproche de ce que je souhaite : le filtre fonctionne, mais ne m'affiche que la dernière ligne vide de mon sous-form, comme s'il ne prenait pas en compte mon souhaite de conserver les valeurs de NumAffaire (X0Y1, par exemple) contenant le texte inscris.

    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,
    la première solution me semble la plus appropriée, après correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub btn_RechercheAffaire_Click()
    Dim sql as string
    sql = "SELECT * FROM ListeAffaires_Loc WHERE NumAffaire Like ""*" & Me.txt_RechercheAffaire & " *"";"
    Me.SF_ListeAffaires_Loc.Form.RecordSource = sql
    End Sub
    --> Même résultat qu'avec la solution de marot_r

    Citation Envoyé par Jeannot45 Voir le message


    Un petit exemple qui répond à ta problématique
    Bonne continuation
    --> C'est ce qui marche , mais ce n'est pas pleinement satisfaisant. Effectivement, j'aimerais appliquer cela à mon sous-formulaire...

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Désolé il y a un espace en trop à la fin du critère du like.

    Il faudrait que ce soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.SF_ListeAffaires_Loc.Form.Filter = "NumAffaire Like ""*" & Me.txt_RechercheAffaire & "*"""
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 635
    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 635
    Points : 14 606
    Points
    14 606
    Par défaut
    bonsoir Xbluxblu,
    Citation Envoyé par marot_r
    Désolé il y a un espace en trop à la fin du critère du like.
    du coup, pareil pour moi, vu que nous sommes tous 2 partis de ton code d'origine
    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 à l'essai
    Homme Profil pro
    Ingénieur Généraliste
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci à vous 😉
    Effectivement j'ai testé bêtement brut en blanc.

    Je testerais ça dès lundi malheureusement...

    Bon weekend à vous

  10. #10
    Membre à l'essai
    Homme Profil pro
    Ingénieur Généraliste
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Re! Sorry du retard

    Ben merci, mais malheureusement cela ne fonctionne guère... avec l'une ou l'autre méthode.
    Avec la méthode de tee_grandbois, ça bouge mon sous-form mais me mets des #NOM? sur tous mes autres champs (de ce sous-form). Et avec celle de Marot_r, et bien il me mets un message d'erreur comme quoi la source d’enregistrement " NumAffaire Like "**" " spécifiée dans ce form n'existe pas.

    Je vais conserver celle de Jeannot45 même si elle n'est pas complétement conforme à ce que j'avais comme idée : ça fera l'affaire.

    Merci de vos investissements respectifs

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 635
    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 635
    Points : 14 606
    Points
    14 606
    Par défaut
    Bonsoir,
    Avec la méthode de tee_grandbois, ça bouge mon sous-form mais me mets des #NOM? sur tous mes autres champs (de ce sous-form).
    cette erreur survient lorsque que le formulaire ne reconnait pas les champs de la requête source: cela veut dire que ListeAffaires_Loc n'est pas la source de données de ton sous-formulaire, je suis pourtant parti d'un des codes que tu as fourni dans ton premier post.
    Essaie ce code qui prend bien le Recordsource du sous-formulaire mais applique la sélection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub btn_RechercheAffaire_Click()
    Dim sql As String
    sql = "select * from(" & Replace(Me.SF_ListeAffaires_Loc.Form.RecordSource, ";", "") & ") WHERE NumAffaire Like ""*" & Me.txt_RechercheAffaire & "*"";"
    Me.SF_ListeAffaires_Loc.Form.RecordSource = sql
    End Sub
    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 ?

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

Discussions similaires

  1. [WD16] Texte contenu dans le champ de recherche/filtre d'une table
    Par WDKyle dans le forum WinDev
    Réponses: 3
    Dernier message: 24/03/2014, 01h03
  2. Vérifier la longueur de la valeur contenue dans un champs
    Par Lutarez dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/10/2008, 13h41
  3. [DAO]Récupérer le contenu d'un champ d'un sous-formulaire
    Par DonQuiShoote dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/04/2007, 14h00
  4. Valeur par défaut dans un champ Browse
    Par fadeninev dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/06/2006, 10h11
  5. voir un texte contenu dans un champ BLOB
    Par dibak dans le forum InterBase
    Réponses: 4
    Dernier message: 19/01/2006, 11h22

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