{Access} repérer un mot sélectionné dans un champ

Fermé
ecrol Messages postés 5 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 19 février 2010 - 11 juil. 2009 à 21:58
 lecrol - 14 juil. 2009 à 06:07
Bonjour,
J'ai une appli Access de type "dictionnaire Mythologie'" Chaque record de la table comporte un champ texte. Dans ces textes, on trouve très souvent des mots qui sont, eux mêmes, des entrées dans la table (autres records) Je voudrais pouvoir fabriquer un "lien" automatique. Je sélectionne un mot dans le champ texte du formulaire, puis un bouton de commande m'ouvre le record (s'il existe !) de la même table mais dont la clé est, précisément, le mot sélectionné
Exemple: Dans le champ texte de la fiche "Dupont", je trouve un texte comme " kjkj goispps kk jnbnzneee gsfg durand gdrriizososo " En mettant en surbrillance le mot Durand , le bouton commande m'ouvre la fiche "Durand" (si elle existe)
Est-ce possible ?
Un grand merci pour vos lumières. Moi je n'ai pas trouvé la solution pour "repérer" le mot sélectionné dans le champ texte.

Cerise sur le gâteau: une fois ouverte (et lue) la fiche "appelée", je voudrais pouvoir revenir automatiquement à la fiche "appelante" pour ne pas avoir à m'en rapeller le n° Excusez de mon exigence !

Cordialement
Roland
A voir également:

6 réponses

zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
12 juil. 2009 à 14:43
Pour rechercher un mot dans un champ texte, on peut utiliser les "alias".
Le critère de la recherche sera alors "*"&[TexteRecherché]&"*".

Tu veux écrire une procédure qui va vérifier si ce texte ou mot existe dans un champ quelconque.
Le problème est que s'il existe en plusieurs exemplaires, tu dois réfléchir au mode d'affichage des données...

Pour revenir à l'enregistrement précédent, tu devrais créer une variable statique et lui attribuer la valeur de la clé primaire de l'enregistrement de départ. Il te suffirait alors de trier les enregistrements à l'aide d'un bouton de commande.
0
Merci de ta réponse super sympa. Mais ça n'est pas tout à fait ça.
Je voudrais pouvoir fabriquer un "lien" automatique, à partir d'un mot quelconque du champ mémo que je lis. Une fois "repéré" ce mot (mais comment?), un bouton de commande m'ouvrirait le record (s'il existe !) de la même table et dont la clé est, précisément, le mot sélectionné

Exemple: Dans le champ texte de la fiche "Dupont", je trouve un texte comme " kjkj goispps kk jnbnzneee gsfg durand gdrriizososo " En mettant en surbrillance le mot Durand , le bouton commande m'ouvre la fiche "Durand" (si elle existe !)

Je voudrais pouvoir ainsi "pointer" un mot quelconque du champ, un peu comme une espèce de lien hypertexte. Ce mot ainsi sélectionné (comment ?) deviendrait le paramètre d'un bouton de commande qui irait, lui avec du code, me chercher la fiche dont la clé = le mot sélectionné dans le champ mémo de départ
Une fois ouverte (et lue) la fiche "appelée", je voudrais pouvoir revenir automatiquement à la fiche "appelante" pour ne pas avoir à m'en rapeller le n° ni à faire deux fois une manip de type recherche (les jumelles, par exemple)

J'ai essayé avec une solution de type souris appuyée, déplacée ou relachée, mais en fait je déclenche l'évènement à chaque passage sur le champ mémo, à chaque saisie ordinaire, ne serait-ce quy epour corriger uen faute !

C'est pourquoi j'avais imaginé une mise en gras, par exemple, du mot sélectionné puis un balayage caractère par caractère du contenu du champ. Mais je ne sais pas bien comment coder tout ça.
Merci d'avance
Amicalement,
Roland
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
12 juil. 2009 à 19:17
Il y a peut-être moyen de s'en sortir avec l'instruction SendKeys en copiant le texte sélectionné ds le presse papier puis en le collant dans le champ de recherche.

Je ne connais pas les commandes et je pense que les nouvelles versions d'Access ne reconnaissent plus SendKeys mais peut-être une autre commande l'a-t-elle remplacé.

Pour revenir à l'enregistrement précédent, je pense que le mieux est d'enregistrer la clé de l'enregistrement courant dans une variable statique et de la récupérer en fermant l'enregistrement appelé.
0
Tu es vraiment sympa. Mais non, Sendkeys ne répond à mon problème Le hic c'est toujours de savoir si et comment on peut "repérer", marquer, choisir un mot dans un texte pour en faire automatiquement un argument pour VBA Et cela d'une façon qui soit distincte, pour l'utilisateur, d'une saisie normale dans ce texte.

Exemple:
Dans un texte tel que: "il se maria avec madame Dupont et ils eurent 3 enfants", texte que je peux lire, modifier, compléter, etc. comment, quand je le veux, "marquer" le mot "Dupont" pour en faire un argument VBA ? Peut-être n'y a t il pas d'autre solution que le bon vieux copié collé ?
Merci
Roland
0
Bonjour,
En fait, j'en reviens à ma première idée (comme toujours !)
Pour "marquer" un mot quelconque dans mon champ texte, sans confusion possible avec une quelconque modif ou saisie ordinaire, j'imagine de le mettre en gras.
Ensuite le code attaché à mon bouton de commande doit rechercher, caractère par caractère, dans le champ texte ce mot en gras.
Mais c'est là que je ne sais comment écrire la boucle de balayage. Je ne sais pas comment arrêter le balayage (fin du champ texte ? dernier caractère ?) .

Si tu peux me "donner la main" pour écrire cette boucle de code, je t'en remercie d'avance
Amicalement,
Roland
0

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

Posez votre question
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
13 juil. 2009 à 12:50
J'y réfléchis, mais je ne peux pas me connecter avant ce soir...
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
13 juil. 2009 à 23:05
J'ai essayé sans succès de faire une boucle...

Je sais qu'on peut recherche une suite de caractères en imbriquant left et right:

J'ai essayé:

i= nombre de caractères à extraire
Do While i < Len(ChampAExplorer) - nombre de caractères à extraire
X = Left (right (ChampAExplorer , i) ,Nombre de caractères à extraire)
If X = ce qu'on cherche Then...
else
i=i+1
end If
Loop

mais ça ne marche pas...
0
Salut Zenon,
C'est vraiment sympa de ne plus être seul à chercher ! Merci ! En fait, je crois que la boucle, on va y arriver, en tâtonnant un peu, comme d'habe !
Mais j'ai découvert que je vais avoir un second problème. A partir du nom d'appel, le mot choisi dans le texte, je ne sais pas bien comment écrire mon appel de lecture, sachant que le champ [Nom] est la clé de ma Table. base. Avec une macro je sais le faire, mais pas avec du code VBA.
Dernier détail : ajouter à mes formulaires actuels, un bouton qui me ramène sur la fiche de laquelle je suis parti, juste avant l'appel. Sur une fiche "Dupont", par exemple, je sélectionne dans le champ [texte] le mot "Durand" Ce mot, je vais voir si une fiche existe avec ce nom-là dans la Table; Si non, message "non trouvé". Si oui, j'ouvre la fiche "Durand" pour y lire ce que je cherche. Et un bouton commande me permet de revenir à la fiche "Dupont".
Suis-je assez clair ? J'espère que oui. Si tu veux, je t'envoie une petite table d'essai que j'ai fabriquée, juste pour ces bidouilles de mise au point
Amicalement,
Roland
0