Création d'un formulaire de recherche d'un mot dans une table

Le
Yuna
Bonjour,

En vue de créer un outil de terminologie qui me ferait gagner du temps, j'ai
créé une banque de données Access.
Elle comporte une table principale de 4 champs ; DE, FR, Source et N°Auto
(clé primaire), et une table secondaire de 1 champ référençant les sources.

J'ai crée un formulaire d'entrée des données mais il me faudrait aussi un
formulaire de recherche dans la table principale, qui contiendra environ
100.000 expressions minimum et ne peut donc être consultée facilement.

Je cherche une solution pour créer un formulaire où je pourrais entrer une
suite de caractères et effectuer une recherche dans la table de ces mêmes
caractères, avec un affichage consécutif des résultats.

1. Cela est-il possible sous Access ?
2. si oui, pourriez-vous me dire comment je peux le faire ?

Merci d'avance pour votre aide

Yuna
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
gilles
Le #16601512
oui c'est possible il tefaut créer

-un formalaire avec un champ critere et un bouton btnrecherche et un
bouton btneffacer avec le code ci dessous:
- un sous-formauliare resultat pour afficher le resultat


Private Sub btnrecherche_Click()
On Error GoTo Err_btnrecherche_Click

' Crée une clause WHERE en utilisant le critère recherche entré
' par l'utilisateur et définit la propriété Source (RecordSource )
' du sous-formulaire Trouver les resulats

Dim monsql As String, moncritère As String, monjeuenreg As String
Dim NbrArg As Integer
Dim Tmp As Variant


' Initialise le compteur d'argument.
NbrArg = 0

' Initialise l'instruction SELECT.
monsql = "SELECT * FROM matable WHERE "
moncritère = ""

' Utilise les valeurs entrées dans les zones de texte de l'en-
tête de fomrulaire
' pour créer les critères de la clause WHERE.

AjouteràWhere [critere], "[nomduchampouonfaitlarecherche]",
moncritère, NbrArg

' Si aucun critère n'est spécifié, renvoie tous les
enregistrements.

If moncritère = "ERREUR" Then
Me![critere].SetFocus
Exit Sub
End If

If moncritère = "" Then
moncritère = "True"
End If

' Crée l'instruction SELECT.
moncritère = UCase(moncritère)
monjeuenreg = monsql & moncritère

' Défini la propriété RecordSource du sous-formulaire .
Me![resultat].Form.RecordSource = monjeuenreg

' Si aucun enregistrement ne correspond aux critères, affiche un
message.
' Active le bouton Effacer.
If Me![resultat].Form.RecordsetClone.RecordCount = 0 Then
MsgBox "Aucun enregistrement ne correspond aux critères
introduits.", 48, "Aucun enregistrements trouvés"
Me!btnEffacer.SetFocus
Else
' Place le point d'insertion dans le sous-formulaire .
Me![resultat].SetFocus
End If

Exit_btnrecherche_Click:
Exit Sub

Err_btnrecherche_Click:
MsgBox Err.description
Resume Exit_btnrecherche_Click

End Sub
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String,
moncritère As String, NbrArg As Integer)
On Error GoTo Err_AjouteràWhere

' Crée le critère pour la clause WHERE.


If ValeurChamp <> "" Then
' Ajoute "et" si aucun critère existe.
If NbrArg > 0 Then
moncritère = moncritère & " And "
End If
moncritère = moncritère & NomChamp & " Like " & Chr(39) &
ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument.
NbrArg = NbrArg + 1
End If

fin:

Exit_AjouteràWhere:
Exit Sub

Err_AjouteràWhere:
MsgBox Err.description
Resume Exit_AjouteràWhere

End Sub

Private Sub btneffacer_Click()
On Error GoTo Err_btneffacer_Click

' Efface les contrôles dans l'en-tête de formulaire et retire les
' enregistrements du sous-formulaire.
'
Dim monsql As String
Dim Tmp As Variant

monsql = "SELECT * FROM ma table WHERE False"

' Clear search text boxes.
Me![critere] = Null

' Réinitialise la propriété RecordSource du sous-formualire pour
retirer les enregistrements.
Me![resultat].Form.RecordSource = monsql

' Place le point d'insertion dans le zone de texte Recherche.
Me![critere].SetFocus

Exit_btneffacer_Click:
Exit Sub

Err_btneffacer_Click:
MsgBox Err.description
Resume Exit_btneffacer_Click

End Sub

si tu a pas tout compris reviens



Yuna a écrit :
Bonjour,

En vue de créer un outil de terminologie qui me ferait gagner du temps, j'ai
créé une banque de données Access.
Elle comporte une table principale de 4 champs ; DE, FR, Source et N°Au to
(clé primaire), et une table secondaire de 1 champ référençant le s sources.

J'ai crée un formulaire d'entrée des données mais il me faudrait au ssi un
formulaire de recherche dans la table principale, qui contiendra environ
100.000 expressions minimum et ne peut donc être consultée facilement ....

Je cherche une solution pour créer un formulaire où je pourrais entre r une
suite de caractères et effectuer une recherche dans la table de ces m êmes
caractères, avec un affichage consécutif des résultats.

1. Cela est-il possible sous Access ?
2. si oui, pourriez-vous me dire comment je peux le faire ?

Merci d'avance pour votre aide...

Yuna


Yuna
Le #16602811
Tout d'abord, merci booooooooooooooooocoup pour l'aide...
sauf que je n'arrive pas trop
Philippe
Le #16604732
Bonjour,

Tu trouveras sur ce lien plusieurs totos qui expliquent comment créer des
formulaires de recherches
http://access.developpez.com/cours/?page=courstuto#formrecherche

Cependant, ils ont tous une approche par le code VBA, je te conseille de les
lire avec attention.

Ton Access étant en Anglais, je te conseille de passer le code, tu n'auras
pratiquement plus de soucis.

Philippe

"Yuna" discussion :
Tout d'abord, merci booooooooooooooooocoup pour l'aide...
sauf que je n'arrive pas trop à départager les instructions des lignes de
code... hmmm j'ai jamais vraiment mis le nez dans les codes, toujours
utilisé
les fonctions préprogrammées.
est-ce que les commandes en français fonctionnent aussi avec un access en
anglais ? (eh oui, mon ordi est en anglische)
si oui tant mieux
seriez-vous en mesure, si je vous donne les noms des champs de me rédiger
le
code pour que je fasse un copier coller ? je sais, c'est beaucoup demander
:oS
sinon, pourriez-vous me mettre en Italique vos instructions et en gras les
parties à adapter aux noms que j'ai choisis?

mercimille fois en avance

Yuna

"gilles" a écrit :

oui c'est possible il tefaut créer

-un formalaire avec un champ critere et un bouton btnrecherche et un
bouton btneffacer avec le code ci dessous:
- un sous-formauliare resultat pour afficher le resultat


Private Sub btnrecherche_Click()
On Error GoTo Err_btnrecherche_Click

' Crée une clause WHERE en utilisant le critère recherche entré
' par l'utilisateur et définit la propriété Source (RecordSource)
' du sous-formulaire Trouver les resulats

Dim monsql As String, moncritère As String, monjeuenreg As String
Dim NbrArg As Integer
Dim Tmp As Variant


' Initialise le compteur d'argument.
NbrArg = 0

' Initialise l'instruction SELECT.
monsql = "SELECT * FROM matable WHERE "
moncritère = ""

' Utilise les valeurs entrées dans les zones de texte de l'en-
tête de fomrulaire
' pour créer les critères de la clause WHERE.

AjouteràWhere [critere], "[nomduchampouonfaitlarecherche]",
moncritère, NbrArg

' Si aucun critère n'est spécifié, renvoie tous les
enregistrements.

If moncritère = "ERREUR" Then
Me![critere].SetFocus
Exit Sub
End If

If moncritère = "" Then
moncritère = "True"
End If

' Crée l'instruction SELECT.
moncritère = UCase(moncritère)
monjeuenreg = monsql & moncritère

' Défini la propriété RecordSource du sous-formulaire .
Me![resultat].Form.RecordSource = monjeuenreg

' Si aucun enregistrement ne correspond aux critères, affiche un
message.
' Active le bouton Effacer.
If Me![resultat].Form.RecordsetClone.RecordCount = 0 Then
MsgBox "Aucun enregistrement ne correspond aux critères
introduits.", 48, "Aucun enregistrements trouvés"
Me!btnEffacer.SetFocus
Else
' Place le point d'insertion dans le sous-formulaire .
Me![resultat].SetFocus
End If

Exit_btnrecherche_Click:
Exit Sub

Err_btnrecherche_Click:
MsgBox Err.description
Resume Exit_btnrecherche_Click

End Sub
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String,
moncritère As String, NbrArg As Integer)
On Error GoTo Err_AjouteràWhere

' Crée le critère pour la clause WHERE.


If ValeurChamp <> "" Then
' Ajoute "et" si aucun critère existe.
If NbrArg > 0 Then
moncritère = moncritère & " And "
End If
moncritère = moncritère & NomChamp & " Like " & Chr(39) &
ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument.
NbrArg = NbrArg + 1
End If

fin:

Exit_AjouteràWhere:
Exit Sub

Err_AjouteràWhere:
MsgBox Err.description
Resume Exit_AjouteràWhere

End Sub

Private Sub btneffacer_Click()
On Error GoTo Err_btneffacer_Click

' Efface les contrôles dans l'en-tête de formulaire et retire les
' enregistrements du sous-formulaire.
'
Dim monsql As String
Dim Tmp As Variant

monsql = "SELECT * FROM ma table WHERE False"

' Clear search text boxes.
Me![critere] = Null

' Réinitialise la propriété RecordSource du sous-formualire pour
retirer les enregistrements.
Me![resultat].Form.RecordSource = monsql

' Place le point d'insertion dans le zone de texte Recherche.
Me![critere].SetFocus

Exit_btneffacer_Click:
Exit Sub

Err_btneffacer_Click:
MsgBox Err.description
Resume Exit_btneffacer_Click

End Sub

si tu a pas tout compris reviens



Yuna a écrit :
> Bonjour,
>
> En vue de créer un outil de terminologie qui me ferait gagner du temps,
> j'ai
> créé une banque de données Access.
> Elle comporte une table principale de 4 champs ; DE, FR, Source et
> N°Auto
> (clé primaire), et une table secondaire de 1 champ référençant les
> sources.
>
> J'ai crée un formulaire d'entrée des données mais il me faudrait aussi
> un
> formulaire de recherche dans la table principale, qui contiendra
> environ
> 100.000 expressions minimum et ne peut donc être consultée
> facilement.....
>
> Je cherche une solution pour créer un formulaire où je pourrais entrer
> une
> suite de caractères et effectuer une recherche dans la table de ces
> mêmes
> caractères, avec un affichage consécutif des résultats.
>
> 1. Cela est-il possible sous Access ?
> 2. si oui, pourriez-vous me dire comment je peux le faire ?
>
> Merci d'avance pour votre aide...
>
> Yuna





Publicité
Poster une réponse
Anonyme