Recherche par mot-clé [Résolu/Fermé]

Signaler
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
-
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
-
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

Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
OK, RV71, je teste, merci beaucoup !
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021
869
bonjour, moi j'essaierais ainsi:
Comme "*" + [Entrer le Mot ou une partie du mot Clé à rechercher ] + "*"
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
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
Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021
869
peut-être via une seconde requête, qui utilise le nombre d'enregistrements retournés pas la première?
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13 >
Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021

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 ?
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31 >
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020

Indice : regardes du côté de dcount()...

A+
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13 >
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021

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
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
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 ?
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31 >
Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021

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 +"*"
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31
 DoCmd.OpenQuery strMaRequete, acNormal 'tu ouvres ta requête ou autre action


J'ai fais une erreur, remplace strMaRequete par MaRequete
Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021
869 >
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021

option explicit
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13 >
Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021

RV71,

1. Dans un des formulaires, j'ai fait comme vous me l'avez conseillé, remplacé strMaRequete par MaRequete. Lorsque je clique le bouton, la requête s'ouvre mais sans prendre en compte ce que je saisis dans le champ texte. Je ne vois pas, dans le code où se trouve la relation entre ce que je saisis dans ce champ et le reste..

Voici le code rentré sur le bouton de recherche qui lance la requête Requête_Simple

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 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

Par contre, la solution de mettre la ligne de code suivante dans une requête paramétrée

comme "*" + formulaires!TonFormulaire!TaZonedeTexte +"*"

fonctionne, j'ai bien le résultat de la requête qui s'affiche mais pas le message 0 enregistrement trouvé

Vous avez une idée ?
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31 >
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020

Utilises plutot comme critère sur ton champs :
comme "*" & forms!tonFormulaire!taZonedeTexte & "*"

A+
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31
Tu peux donner le code sql de la requête stp ?

A+
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
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...
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31 >
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020

Remplace
Like "*" + [formulaires]![Recherche_mots_cles_02]![Indépendant] + "*" 


par

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


A+
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13 >
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021

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..
...
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31
Tu es sur ?? si tu saisis zzzzzz dans le champ indépendant, ça retourne quoi ?
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
Désolé, j'ai la requête 1 qui m'affiche la table entière...

Prise de tête...
Messages postés
492
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
2 avril 2021
31
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+
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
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
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
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 !!!
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13
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 ?
Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021
869
peux-tu plutôt créer une nouvelle discussion pour ceci?
Messages postés
128
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
15 juin 2020
13 >
Messages postés
16120
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 juin 2021

Oui, c'est ce que je viens de faire.

Bonne journée,

Éric