Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche à partir d'un mot d'un champ texte

9 réponses
Avatar
lecrol
Bonjour à tous
J'ai une appli Access de type "dictionnaire Mythologie'" Chaque record de la
table comporte un champ texte assez long. Dans ces textes, on trouve très
souvent des mots qui sont, eux mêmes, des entrées de la table (autres
records) Je voudrais pouvoir fabriquer un "lien" automatique. Je sélectionne
un mot dans le champ texte du formulaire (surbrillance par ex., pour éviter
le copié-collé), et un bouton commande m'ouvre le record (s'il existe !) de
la même table mais dont la clé = le mot sélectionné.
Ex.: Dans le texte, fiche "Dupont", je lis un truc tel que: " kjkj goispps
kk jnbnzneee gsfg durand gdrriizososo " Après avoir mis en surbrillance le
mot "Durand", le bouton commande m'ouvre la fiche "Durand" si elle existe

J'ai essayé la sélection avec un simple MsgBox: évènement double clicq et
Seltexte dans mon code. Mais je n'arrive pas toujours à "capturer" mon mot.
Touche Ctrl ou pas ? je ne sais pas bien.

Autre et dernière chose (plus simple ?) : je voudrais sur mon formulaire un
bouton qui me fait revenir à la fiche lue juste précédemment. Et ça non plus,
je n'y arrive pas.
Merci d'avance. Cordialement
Roland

9 réponses

Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Réflexion : est-ce que la base est bien construite ?
Vous avez un "fait Mythologique" avec une série de mots clés.
Actuellement, ces mots clés sont associés dans un seul champ texte accolé au
"fait Mytho".
Mais la structure réelle devrait être :
- Un fait Mytho pour plusieurs mots clés.
- Un mot clé pour plusieurs faits Mytho.

C'est une relation + à +

En fait, il faut une troisième table qui fera les relations entre l'une et
l'autre.

Si votre base n'est pas trop avancée, vous la réparerez à la main, sinon
elle pourra être réparée par un expert.

Cdt, Blaise
---- ---- ----


"lecrol" a écrit dans le message de news:

Bonjour à tous
J'ai une appli Access de type "dictionnaire Mythologie'" Chaque record de
la
table comporte un champ texte assez long. Dans ces textes, on trouve très
souvent des mots qui sont, eux mêmes, des entrées de la table (autres
records) Je voudrais pouvoir fabriquer un "lien" automatique. Je
sélectionne
un mot dans le champ texte du formulaire (surbrillance par ex., pour
éviter
le copié-collé), et un bouton commande m'ouvre le record (s'il existe !)
de
la même table mais dont la clé = le mot sélectionné.
Ex.: Dans le texte, fiche "Dupont", je lis un truc tel que: " kjkj goispps
kk jnbnzneee gsfg durand gdrriizososo " Après avoir mis en surbrillance le
mot "Durand", le bouton commande m'ouvre la fiche "Durand" si elle existe

J'ai essayé la sélection avec un simple MsgBox: évènement double clicq et
Seltexte dans mon code. Mais je n'arrive pas toujours à "capturer" mon
mot.
Touche Ctrl ou pas ? je ne sais pas bien.

Autre et dernière chose (plus simple ?) : je voudrais sur mon formulaire
un
bouton qui me fait revenir à la fiche lue juste précédemment. Et ça non
plus,
je n'y arrive pas.
Merci d'avance. Cordialement
Roland


Avatar
lecrol
Bonsoir,
Merci de la réponse. Mais noooon, je suis désolé Je me suis mal fait
comprendre.

"Vous avez un "fait Mythologique" avec une série de mots clés ...associés
dans un seul champ texte accolé au "fait Mytho"."
Non, ça n'est pas du tout ! Mon champ [texte] ne contient aucun mot clé Il
contient des textes libres mais dans lesquels il peut (ou pas) se trouver des
noms de personnages, comme dans n'importe quel autre dictionnaire. Ces noms
peuvent (ou pas) être des entrées dans la même table "Personnages"
Exactement comme un dictionnaire normal !
Merci de votre compréhension.
Roland
----------------------------------
Selon : Bonjour ou bonsoir

Réflexion : est-ce que la base est bien construite ?
Vous avez un "fait Mythologique" avec une série de mots clés.
Actuellement, ces mots clés sont associés dans un seul champ texte accolé au
"fait Mytho".
Mais la structure réelle devrait être :
- Un fait Mytho pour plusieurs mots clés.
- Un mot clé pour plusieurs faits Mytho.

C'est une relation + à +

En fait, il faut une troisième table qui fera les relations entre l'une et
l'autre.

Si votre base n'est pas trop avancée, vous la réparerez à la main, sinon
elle pourra être réparée par un expert.

Cdt, Blaise
---- ---- ----


"lecrol" a écrit dans le message de news:

> Bonjour à tous
> J'ai une appli Access de type "dictionnaire Mythologie'" Chaque record de
> la
> table comporte un champ texte assez long. Dans ces textes, on trouve très
> souvent des mots qui sont, eux mêmes, des entrées de la table (autres
> records) Je voudrais pouvoir fabriquer un "lien" automatique. Je
> sélectionne
> un mot dans le champ texte du formulaire (surbrillance par ex., pour
> éviter
> le copié-collé), et un bouton commande m'ouvre le record (s'il existe !)
> de
> la même table mais dont la clé = le mot sélectionné.
> Ex.: Dans le texte, fiche "Dupont", je lis un truc tel que: " kjkj goispps
> kk jnbnzneee gsfg durand gdrriizososo " Après avoir mis en surbrillance le
> mot "Durand", le bouton commande m'ouvre la fiche "Durand" si elle existe
>
> J'ai essayé la sélection avec un simple MsgBox: évènement double clicq et
> Seltexte dans mon code. Mais je n'arrive pas toujours à "capturer" mon
> mot.
> Touche Ctrl ou pas ? je ne sais pas bien.
>
> Autre et dernière chose (plus simple ?) : je voudrais sur mon formulaire
> un
> bouton qui me fait revenir à la fiche lue juste précédemment. Et ça non
> plus,
> je n'y arrive pas.
> Merci d'avance. Cordialement
> Roland





Avatar
Richard_35
Bonjour lecrol,

Si je peux me permettre de reformuler cette question qui me paraît très
intéressante (si je l'ai bien comprise, bien entendu).

En fait, il faudrait trouver une propriété d'un champ texte qui pourrait
s'écrire :
MsgBox Texte0.PartieDuTexteSélectionnée
où "PartieDuTexteSélectionnée" serait la chaîne de caractère en
surbrillance, donc sélectionnée comme pour effectuer un copier/coller.

Ensuite, créer une requête avec cette chaîne de caractère ne pose aucune
difficulté.

Je n'ai pas trouvé cette propriété, désolé, mais cela ne veut pas dire
qu'elle n'existe pas.

Merci à tous pour vos lumières,
Richard.


"lecrol" a écrit :

Bonsoir,
Merci de la réponse. Mais noooon, je suis désolé Je me suis mal fait
comprendre.

"Vous avez un "fait Mythologique" avec une série de mots clés ...associés
dans un seul champ texte accolé au "fait Mytho"."
Non, ça n'est pas du tout ! Mon champ [texte] ne contient aucun mot clé Il
contient des textes libres mais dans lesquels il peut (ou pas) se trouver des
noms de personnages, comme dans n'importe quel autre dictionnaire. Ces noms
peuvent (ou pas) être des entrées dans la même table "Personnages"
Exactement comme un dictionnaire normal !
Merci de votre compréhension.
Roland
----------------------------------
> Selon : Bonjour ou bonsoir
>
> Réflexion : est-ce que la base est bien construite ?
> Vous avez un "fait Mythologique" avec une série de mots clés.
> Actuellement, ces mots clés sont associés dans un seul champ texte accolé au
> "fait Mytho".
> Mais la structure réelle devrait être :
> - Un fait Mytho pour plusieurs mots clés.
> - Un mot clé pour plusieurs faits Mytho.
>
> C'est une relation + à +
>
> En fait, il faut une troisième table qui fera les relations entre l'une et
> l'autre.
>
> Si votre base n'est pas trop avancée, vous la réparerez à la main, sinon
> elle pourra être réparée par un expert.
>
> Cdt, Blaise
> ---- ---- ----
>
>
> "lecrol" a écrit dans le message de news:
>
> > Bonjour à tous
> > J'ai une appli Access de type "dictionnaire Mythologie'" Chaque record de
> > la
> > table comporte un champ texte assez long. Dans ces textes, on trouve très
> > souvent des mots qui sont, eux mêmes, des entrées de la table (autres
> > records) Je voudrais pouvoir fabriquer un "lien" automatique. Je
> > sélectionne
> > un mot dans le champ texte du formulaire (surbrillance par ex., pour
> > éviter
> > le copié-collé), et un bouton commande m'ouvre le record (s'il existe !)
> > de
> > la même table mais dont la clé = le mot sélectionné.
> > Ex.: Dans le texte, fiche "Dupont", je lis un truc tel que: " kjkj goispps
> > kk jnbnzneee gsfg durand gdrriizososo " Après avoir mis en surbrillance le
> > mot "Durand", le bouton commande m'ouvre la fiche "Durand" si elle existe
> >
> > J'ai essayé la sélection avec un simple MsgBox: évènement double clicq et
> > Seltexte dans mon code. Mais je n'arrive pas toujours à "capturer" mon
> > mot.
> > Touche Ctrl ou pas ? je ne sais pas bien.
> >
> > Autre et dernière chose (plus simple ?) : je voudrais sur mon formulaire
> > un
> > bouton qui me fait revenir à la fiche lue juste précédemment. Et ça non
> > plus,
> > je n'y arrive pas.
> > Merci d'avance. Cordialement
> > Roland
>
>
>


Avatar
lecrol
Ouiiiiiiiii, Richard, c'est pile poil ça ! Et figure-toi que j'avais trouvé
la soluce, un peu par hasard, il y a quelque temps. Je crois bien que
c'était avec un Seltexte Mais je n'arrive pas à la recréer !
Merci des lumières qui vont nous éclairer
Roland

"Richard_35" wrote:

Bonjour lecrol,

Si je peux me permettre de reformuler cette question qui me paraît très
intéressante (si je l'ai bien comprise, bien entendu).
En fait, il faudrait trouver une propriété d'un champ texte qui pourrait
s'écrire :
MsgBox Texte0.PartieDuTexteSélectionnée où "PartieDuTexteSélectionnée" serait la chaîne de caractère en surbrillance, donc sélectionnée comme pour effectuer un copier/coller.

Ensuite, créer une requête avec cette chaîne de caractère ne pose aucune
difficulté.
Je n'ai pas trouvé cette propriété, désolé, mais cela ne veut pas dire
qu'elle n'existe pas.



Merci à tous pour vos lumières,
Richard.


"lecrol" a écrit :

> Bonsoir,
> Merci de la réponse. Mais noooon, je suis désolé Je me suis mal fait
> comprendre.
>
> "Vous avez un "fait Mythologique" avec une série de mots clés ...associés
> dans un seul champ texte accolé au "fait Mytho"."
> Non, ça n'est pas du tout ! Mon champ [texte] ne contient aucun mot clé Il
> contient des textes libres mais dans lesquels il peut (ou pas) se trouver des
> noms de personnages, comme dans n'importe quel autre dictionnaire. Ces noms
> peuvent (ou pas) être des entrées dans la même table "Personnages"
> Exactement comme un dictionnaire normal !
> Merci de votre compréhension.
> Roland
> ----------------------------------
> > Selon : Bonjour ou bonsoir
> >
> > Réflexion : est-ce que la base est bien construite ?
> > Vous avez un "fait Mythologique" avec une série de mots clés.
> > Actuellement, ces mots clés sont associés dans un seul champ texte accolé au
> > "fait Mytho".
> > Mais la structure réelle devrait être :
> > - Un fait Mytho pour plusieurs mots clés.
> > - Un mot clé pour plusieurs faits Mytho.
> >
> > C'est une relation + à +
> >
> > En fait, il faut une troisième table qui fera les relations entre l'une et
> > l'autre.
> >
> > Si votre base n'est pas trop avancée, vous la réparerez à la main, sinon
> > elle pourra être réparée par un expert.
> >
> > Cdt, Blaise
> > ---- ---- ----
> >
> >
> > "lecrol" a écrit dans le message de news:
> >
> > > Bonjour à tous
> > > J'ai une appli Access de type "dictionnaire Mythologie'" Chaque record de
> > > la
> > > table comporte un champ texte assez long. Dans ces textes, on trouve très
> > > souvent des mots qui sont, eux mêmes, des entrées de la table (autres
> > > records) Je voudrais pouvoir fabriquer un "lien" automatique. Je
> > > sélectionne
> > > un mot dans le champ texte du formulaire (surbrillance par ex., pour
> > > éviter
> > > le copié-collé), et un bouton commande m'ouvre le record (s'il existe !)
> > > de
> > > la même table mais dont la clé = le mot sélectionné.
> > > Ex.: Dans le texte, fiche "Dupont", je lis un truc tel que: " kjkj goispps
> > > kk jnbnzneee gsfg durand gdrriizososo " Après avoir mis en surbrillance le
> > > mot "Durand", le bouton commande m'ouvre la fiche "Durand" si elle existe
> > >
> > > J'ai essayé la sélection avec un simple MsgBox: évènement double clicq et
> > > Seltexte dans mon code. Mais je n'arrive pas toujours à "capturer" mon
> > > mot.
> > > Touche Ctrl ou pas ? je ne sais pas bien.
> > >
> > > Autre et dernière chose (plus simple ?) : je voudrais sur mon formulaire
> > > un
> > > bouton qui me fait revenir à la fiche lue juste précédemment. Et ça non
> > > plus,
> > > je n'y arrive pas.
> > > Merci d'avance. Cordialement
> > > Roland
> >
> >
> >


Avatar
lecrol
génial, 3stone ! ça marche !
J'ai mis le code suivant:
---
Public TexteSelection As String
-------------------------------------------------------------------------------
***** Sur le champ [texte] **************

Private Sub Texte_DblClick(Cancel As Integer)
Dim iStart As Integer, iLength As Integer

With Me.Texte
.SetFocus
iStart = .SelStart
iLength = .SelLength
MsgBox ("Length = " & iLength)
TexteSelection = Mid(Texte.Value, iStart + 1, iLength + 1)
MsgBox ("texte choisi = " & TexteSelection)
End With

End Sub
-----------------------------------------------------------------------------------
****** Sur le bouton appel ******

Private Sub Appel_Click()
If Len(TexteSelection) > 0 Then
With Me.RecordsetClone
.MoveLast
.MoveFirst
MsgBox ("recherche lancée avec " & TexteSelection)
.FindFirst "Nom = '" & TexteSelection & "'"
If .NoMatch Then
MsgBox ("Pas trouvé")
End If
If Not .NoMatch Then
Me.Bookmark = .Bookmark
End If
End With
End If

TexteSelection = ""
End Sub
--------------------------------------------------------

1) Je crois avoir pu vérifier qu'il fallait garder la touche ctrl enfoncée (?)
2) avec le .seltexte, ça marche des fois oui, mais des fois non. Je ne sais
pas pourquoi. Alors, j'ai abandonné pour en rester aux selstart et
sellength.
3) le texte sélectionné est parfois tronqué du 1er ou du dernier caractère.
Il me faut prévoir une validation avec correction possible dans mon MsgBox

Enfin et c'est la dernière chose: il me faut ajouter sur mon formulaire un
bouton "retour au record lu précédemment, celui d'où l'on vient !"
Tu sais faire ça ?
D'avance un pastis, à distance, pour ta gentillesse
Roland
Avatar
Richard_35
Bonjour 3stone,

Merci pour l'astuce (le secret était donc dans l'évènement "Souris relâchée").
Juste un détail : "sTxtToFind = .SelText" semble bien fonctionner bien.

A bientôt,
Richard.

"3stone" a écrit :

Salut,

lecrol wrote:
> Ouiiiiiiiii, Richard, c'est pile poil ça ! Et figure-toi que j'avais
> trouvé
> la soluce, un peu par hasard, il y a quelque temps. Je crois bien que
> c'était avec un Seltexte Mais je n'arrive pas à la recréer !
> Merci des lumières qui vont nous éclairer


Disons que tu as :
- un champ clé primaire (numauto)
- un champ "KeyWord" qui sera indexé
- un champ "Description" qui contient "le texte assez long" ;-)


Dans l'événement "MouseUp" (souris relachée) de champ "Description"
(plus correctement de sa zone de texte) tu mets le code suivant:


Dim iStart As Integer, iLength As Integer

With Me.txtDescription
.SetFocus
iStart = .SelStart
iLength = .SelLength
sTxtToFind = Mid(txtDescription.Value, iStart + 1, iLength + 1)
End With



Ensuite, tu places un bouton qque part à coté, avec ce code :

If Len(sTxtToFind) > 0 Then
With Me.RecordsetClone
.MoveLast
.MoveFirst
.FindFirst "KeyWord ='" & sTxtToFind & "'"
If Not .NoMatch Then
Me.Bookmark = .Bookmark
End If
End With
End If


Tu déclares encore la variable publique (en de la 1ere sub)

Dim sTxtToFind As String

Avec cela, tu peux sélectionner un mot par double-clic dans
le champ "Description" et cliquer sur le bouton pour te retrouver
sur l'enregistrement qui possède ledit mot dans le champ "KeyWord"

NB: Les zones de texte porte ici le nom des champs préfixés par "txt"


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
lecrol
Merciiiii encore Effectivement, c'est l'évènement 'souris relachée' qui
marche super J'avais, à tort, choisi double clicq pour ne pas confondre avec
une saisie ordinaire sur ce champ texte
Merci mille fois !
Roland
Je m'occupe du bouton "retour à la fiche juste précédente"
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Chapeau bas. J'avais pas du tout compris comme cela.
Mais dis-donc, 3stone, pourquoi l'horloge de ton news indique t'elle le
30/8/9 ?


Cdt, Blaise
---- ---- ----


"3stone" a écrit dans le message de news:
%
Salut,

lecrol wrote:
Ouiiiiiiiii, Richard, c'est pile poil ça ! Et figure-toi que j'avais
trouvé
la soluce, un peu par hasard, il y a quelque temps. Je crois bien que
c'était avec un Seltexte Mais je n'arrive pas à la recréer !
Merci des lumières qui vont nous éclairer




Disons que tu as :
- un champ clé primaire (numauto)
- un champ "KeyWord" qui sera indexé
- un champ "Description" qui contient "le texte assez long" ;-)


Dans l'événement "MouseUp" (souris relachée) de champ "Description"
(plus correctement de sa zone de texte) tu mets le code suivant:


Dim iStart As Integer, iLength As Integer

With Me.txtDescription
.SetFocus
iStart = .SelStart
iLength = .SelLength
sTxtToFind = Mid(txtDescription.Value, iStart + 1, iLength + 1)
End With



Ensuite, tu places un bouton qque part à coté, avec ce code :

If Len(sTxtToFind) > 0 Then
With Me.RecordsetClone
.MoveLast
.MoveFirst
.FindFirst "KeyWord ='" & sTxtToFind & "'"
If Not .NoMatch Then
Me.Bookmark = .Bookmark
End If
End With
End If


Tu déclares encore la variable publique (en de la 1ere sub)

Dim sTxtToFind As String

Avec cela, tu peux sélectionner un mot par double-clic dans
le champ "Description" et cliquer sur le bouton pour te retrouver
sur l'enregistrement qui possède ledit mot dans le champ "KeyWord"

NB: Les zones de texte porte ici le nom des champs préfixés par "txt"


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Avatar
3stone
Salut Blaise,

Blaise Cacramp wrote:
Mais dis-donc, 3stone, pourquoi l'horloge de ton news indique t'elle
le 30/8/9 ?




Parce que c'est la veille de mon anniversaire... et que je voulais
fêter cela pendant tout le mois !

Maintenant, c'est rapé :o))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)