Recherche par mot-clé

Résolu/Fermé
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 - 6 mai 2020 à 10:42
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 - 7 mai 2020 à 09:08
Bonjour,

Je connais les bases d'Access mais suis coincé. J'ai la version 365.

J'ai créé une requête pour qu'un utilisateur puisse interroger une table à partir de mots-clés qu'il aurait saisis dans une requête.
Dans les critères de ma requête j'ai mis : Comme [Entrer le Mot ou une partie du mot Clé à rechercher ]+"*"
C'est pas mal mais la recherche est bonne uniquement si le mot saisi par l'utilisateur se trouve en premier dans les enregistrements de mon champ.

Par exemple :
Traçabilité du nettoyage des bureaux
Si l'utilisateur saisit "Traçabilité", la requête fonctionne et affiche tous les enregistrements qui contiennent le mot Traçabilité en début d'enregistrement.
Par contre si l'utilisateur saisit "bureaux" ça ne fonctionne pas car ce terme n'est pas en début d'enregistrement. J'espère avoir été clair.

Je pense que pour un utilisateur averti, ce doit être facile... Vous pourriez m'aider ?

Merci beaucoup d'avance.

Éric

13 réponses

yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 Ambassadeur 1 556
6 mai 2020 à 11:45
bonjour, moi j'essaierais ainsi:
Comme "*" + [Entrer le Mot ou une partie du mot Clé à rechercher ] + "*"
1
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
Modifié le 6 mai 2020 à 16:35
Perso, je passerais par un formulaire, contenant une zone de texte dans laquelle l'utilisateur rentre le mot clé.
Et un bouton sur ce formulaire, avec comme code sur clic:
Dim MaRequete As String
 
MaRequete = "MaRequete01" 'remplace MaRequete01 par le nom de ta requête paramétrée
If DCount("*", MaRequete) > 0 Then 'il y a au moins 1 enregistrement
   DoCmd.OpenQuery MaRequete, acNormal 'tu ouvres ta requête ou autre action
Else
   MsgBox "Aucun enregistrement ne contient ce(s) mot(s)" 'message que tu personnalises
End If


A+
1
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
Modifié le 6 mai 2020 à 17:01
OK, RV71, je teste, merci beaucoup !
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
6 mai 2020 à 23:10
Bon, je te laisse modifier tout seul le critère dans la requête, la zone de texte dans ton formulaire ne s'appelle pas "indépendant" mais texte0...

A+
1
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
6 mai 2020 à 23:20
Je n'ai pas pris l'étiquette, mais bien le nom de la zone de texte (double clic dessus ou clic droit propriétés).

Tu peux renommer l'étiquette si tu veux, ça ne changera pas le nom de la zone et vice versa.

A+
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
6 mai 2020 à 13:55
Merci pour votre réponse yg_be ça fonctionne bien mieux comme ça, la recherche est bien effectuée dans tous les enregistrements !!!

Savez-vous s'il existe un moyen, au cas où la recherche ne donne pas de résultats, d'afficher un texte du genre "merci de renouveler votre demande" ou "le mot-clé n'a pas été trouvé" ?

Cordialement,

Éric
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
6 mai 2020 à 14:00
peut-être via une seconde requête, qui utilise le nombre d'enregistrements retournés pas la première?
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13 > yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024
6 mai 2020 à 14:27
C'est une bonne idée, mais je sais pas comment faire. Je vais chercher sur les tutos. Je pourrais éventuellement vous demander conseil si je ne trouve pas ?
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31 > emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022
6 mai 2020 à 14:56
Indice : regardes du côté de dcount()...

A+
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13 > RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024
6 mai 2020 à 15:31
Merci RV71..

J'ai commencé à regarder mais je ne sais pas comment utiliser cette fonction. Ce dois être ça qu'il me faut néanmoins.
Je creuse !

Éric
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
6 mai 2020 à 17:08
RV71 :

J'ai une erreur d'exécution 2496
L'action ou la méthode requiert un argument Nom requête

Voilà mon code :

Private Sub Bascule2_Click()
Dim MaRequete As String

MaRequete = "Requête simple" 'remplace MaRequete01 par le nom de ta requête paramétrée
If DCount("*", MaRequete) > 0 Then 'il y a au moins 1 enregistrement
DoCmd.OpenQuery strMaRequete, acNormal 'tu ouvres ta requête ou autre action
Else
MsgBox "Aucun enregistrement ne contient ce(s) mot(s)" 'message que tu personnalises
End If
End Sub

Vous voyez l'erreur ?
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
6 mai 2020 à 17:12
Je pense que cela ne va pas fonctionner car la requête pose une question, et tu ne veux sans doute pas poser deux fois la question.
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13 > yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024
6 mai 2020 à 17:15
Merci pour votre réponse yg_be mais Requête simple est différente et ne demande pas à l'utilisateur de saisir sa recherche dans une boîte de dialogue (comme vous me l'avez suggéré) ...
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
Modifié le 6 mai 2020 à 17:35
 DoCmd.OpenQuery strMaRequete, acNormal 'tu ouvres ta requête ou autre action


J'ai fais une erreur, remplace strMaRequete par MaRequete
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31 > yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024
Modifié le 6 mai 2020 à 17:52
Du coup changes ton critère dans ta requete, au lieu de :
Comme "*"+ [Entrer le Mot ou une partie du mot Clé à rechercher ]+"*"

mets :

comme "*" + formulaires!TonFormulaire!TaZonedeTexte +"*"
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556 > RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024
6 mai 2020 à 17:43
option explicit
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
6 mai 2020 à 21:31
Tu peux donner le code sql de la requête stp ?

A+
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
6 mai 2020 à 22:16
Voilà le code de la requête "Requête1"
SELECT Feuil1.Titre, Feuil1.[Cliquez le lien correspondant]
FROM Feuil1
WHERE (((Feuil1.Titre) Like "*"+[formulaires]![Recherche_mots_cles_02]![Indépendant]+"*"));

C'est dans le formulaire Recherche_mots_cles_02 que j'ai créé un bouton action sur lequel j'ai rentré la procédure événementielle :

Private Sub Bascule2_Click()
Dim MaRequete As String

MaRequete = "Requête1" 'remplace MaRequete01 par le nom de ta requête paramétrée
If DCount("*", MaRequete) > 0 Then 'il y a au moins 1 enregistrement
DoCmd.OpenQuery MaRequete, acNormal 'tu ouvres ta requête ou autre action
Else
MsgBox "Aucun enregistrement ne contient ce(s) mot(s)" 'message que tu personnalises
End If
End Sub

Indépendant est la zone de texte du formulaire Recherche_mots_cles_02

Le résultat est toujours le même : "Aucun enregistrement ne contient..." même si je ne saisis rien ou n'importe quoi dans le champ texte Indépendant

Je ne sais pas si c'est clair...
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31 > emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022
6 mai 2020 à 22:24
Remplace
Like "*" + [formulaires]![Recherche_mots_cles_02]![Indépendant] + "*" 


par

Like "*" & [formulaires]![Recherche_mots_cles_02]![Indépendant] & "*"


A+
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13 > RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024
6 mai 2020 à 22:31
Merci...

Lorsque que je clique le bouton dans mon formulaire, je n'ai pas les messages et la requête ne tient pas compte de ce que j'ai saisi dans le champ "Indépendant". J'ai tous les enregistrements..
...
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
6 mai 2020 à 22:34
Tu es sur ?? si tu saisis zzzzzz dans le champ indépendant, ça retourne quoi ?
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
6 mai 2020 à 22:48
Désolé, j'ai la requête 1 qui m'affiche la table entière...

Prise de tête...
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
6 mai 2020 à 22:50
et il y a bien le critère dans cette requête ?

Tu peux envoyer ta base si tu veux via https://www.cjoint.com/ par exemple.

A+
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
6 mai 2020 à 23:01
C'est sympa de vouloir y jeter un coup d'oeil.
Voilà un lien vers mon cloud :
https://onedrive.live.com/redir?resid=83CBA75779CF0087!97054&authkey=!AJnYTCRcYKJH7K0&e=5Zn84p

Le but du jeu est de pouvoir, en utilisant le formulaire Recherche_mots_cles_02 qui va chercher la requête Requête1 avoir un message indiquant s'il s'y trouvent ou pas des enregistrements qui correspondent à la saisie du champ Indépendant du formulaire Recherche_mots_clés_02. Évidemment, le résultat de la requête est selon ce que j'ai saisi dans le formulaire Recherche_mots_clés_02
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
6 mai 2020 à 23:17
Pfff j'ai pas pris l'étiquette... tout ça pour ça ! Désolé mais un grand grand merci !
Ca prend une bonne tournure.

Boone soirée !!!
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13
7 mai 2020 à 08:54
RV71
OK, c'était énorme...
J'ai une autre question pour un détail. Vous avez vu que j'ai des enregistrements sous forme de liens hypertextes qui pointent vers des fichiers Word.
Savez-vous s'il est possible, une fois le lien cliqué que non seulement le fichier cible s'ouvre mais aussi que l'on retourne vers le formulaire ou carrément quitter Access ?
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
7 mai 2020 à 09:04
peux-tu plutôt créer une nouvelle discussion pour ceci?
0
emarie3680 Messages postés 131 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 16 décembre 2022 13 > yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024
7 mai 2020 à 09:08
Oui, c'est ce que je viens de faire.

Bonne journée,

Éric
0