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

Appliquer une mise en forme au caractère qui précède le curseur

10 réponses
Avatar
Patrick_67
Bonjour =E0 toutes et =E0 tous,

Je dispose d'Access 2007 qui permet (pour les champs de type 'm=E9mo')
de mettre en forme uniquement quelques-uns des caract=E8res d'un champ
de donn=E9es.

J'ai un formulaire qui contient de nombreux champs de donn=E9es.

J'aimerai :
1=2E cliquer dans un champ
2=2E au moment de l'=E9x=E9cution d'un raccourci-clavier personnalis=E9, fa=
ire
en sorte qu'une mise en forme personnalis=E9e soit imm=E9diatement
appliqu=E9e au caract=E8re qui se trouve =E0 gauche du curseur
puis r=E9p=E9ter les =E9tapes 1 et 2 manuellement, autant que n=E9cessaire.

Exemple :
Soit un formulaire qui contient un champ 'R=E9f=E9rence_Article' et un
champ 'R=E9f=E9rence-Fournisseur'
L'enregistrement actuellement =E0 l'=E9cran affiche la r=E9f=E9rence article
"123abc456" et la r=E9f=E9rence fournisseur "F789ZY18".

1=2E Je clique dans la r=E9f=E9rence article entre le "b" et le "c".
2=2E via un raccourci clavier (ex. CTRL + m), le "b" (qui se trouve =E0
gauche du curseur) devrait se mettre en couleur de police rouge et en
soulign=E9.
3=2E Je clique ensuite dans la r=E9f=E9rence fournisseur entre le "Y" et le
"1".
4=2E via le m=EAme raccourci clavier (CTRL + m), le "Y" (qui se trouve =E0
gauche du curseur) devrait =E9galement se mettre en couleur de police
rouge et en soulign=E9.

Je souhaite r=E9p=E9ter cette op=E9ration pour toute une s=E9rie de donn=E9=
es.

Merci d'avance de vos r=E9ponses...

Patrick.

10 réponses

Avatar
Thierry (ze Titi)
Bonjour Patrick_67

Sans vouloir paraître pessimiste, je pense que tu demandes
l'impossible... Je peux me tromper mais, à moins d'un activeX
autorisant ce genre de chose, Access ne permet en natif ce type de
fantaisie. A confirmer (ou infirmer) par les personnes plus compétentes
que moi...


Dans ton message
du dimanche 16/09/2007 jour de Sainte Edith, tu as pris l'initiative de
nous narrer les faits suivants:
Bonjour à toutes et à tous,

Je dispose d'Access 2007 qui permet (pour les champs de type 'mémo')
de mettre en forme uniquement quelques-uns des caractères d'un champ
de données.

J'ai un formulaire qui contient de nombreux champs de données.

J'aimerai :
1. cliquer dans un champ
2. au moment de l'éxécution d'un raccourci-clavier personnalisé, faire
en sorte qu'une mise en forme personnalisée soit immédiatement
appliquée au caractère qui se trouve à gauche du curseur
puis répéter les étapes 1 et 2 manuellement, autant que nécessaire.

Exemple :
Soit un formulaire qui contient un champ 'Référence_Article' et un
champ 'Référence-Fournisseur'
L'enregistrement actuellement à l'écran affiche la référence article
"123abc456" et la référence fournisseur "F789ZY18".

1. Je clique dans la référence article entre le "b" et le "c".
2. via un raccourci clavier (ex. CTRL + m), le "b" (qui se trouve à
gauche du curseur) devrait se mettre en couleur de police rouge et en
souligné.
3. Je clique ensuite dans la référence fournisseur entre le "Y" et le
"1".
4. via le même raccourci clavier (CTRL + m), le "Y" (qui se trouve à
gauche du curseur) devrait également se mettre en couleur de police
rouge et en souligné.

Je souhaite répéter cette opération pour toute une série de données.

Merci d'avance de vos réponses...

Patrick.


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Patrick_67
Merci Thierry pour ta réponse.

Ma demande est certes délicate mais peut-être pas impossible.

En Word par exemple (où j'avais le même besoin), j'ai réussi à
programmer une mise en forme spécifique qui s'applique au caractère
précédent le curseur.
C'était assez facile car j'ai réussi à écrire une procédure VBA q ui
va :
1. connaître l'emplacement du curseur
2. sélectionner le caractère qui le précède
3. appliquer une mise en forme

En Access, programmer la mise en forme ne me pose pas de problème.
Par contre c'est déterminer la position du curseur dans le champ puis
sélectionner le caractère qui le précède que je n'arrive pas à
réaliser.

Merci d'avance pour toute idée supplémentaire...

Patrick.
Avatar
Fabien
Merci Thierry pour ta réponse.

Ma demande est certes délicate mais peut-être pas impossible.

En Word par exemple (où j'avais le même besoin), j'ai réussi à
programmer une mise en forme spécifique qui s'applique au caractère
précédent le curseur.
C'était assez facile car j'ai réussi à écrire une procédure VBA qui
va :
1. connaître l'emplacement du curseur
2. sélectionner le caractère qui le précède
3. appliquer une mise en forme

En Access, programmer la mise en forme ne me pose pas de problème.
Par contre c'est déterminer la position du curseur dans le champ puis
sélectionner le caractère qui le précède que je n'arrive pas à
réaliser.

Merci d'avance pour toute idée supplémentaire...

Patrick.

Salut,

Word et access c'est pas la même chose ;-)
Dans access une propriété s'applique a un contrôle de façon globale.
Donc même si tu as la position du curseur tu ne peux agir sur le texte à
cette position
Mais tu peux définir un autre contrôle d'un caractère qui reprendrais
celui que tu veux et auquel tu appliquerais la propriété. Reste a
superposer le contrôle 'court' sur le contrôle long et a le mettre en
visible et avant-plan.
A essayer ...

Avatar
Patrick_67
"Word et access c'est pas la même chose" : je confirme; et même Excel
diffère (un peu, beaucoup, passionnément, à la folie) des 2
précédents ;-)

"Dans access une propriété s'applique a un contrôle de façon
globale." : vrai jusqu'à Access 2003 mais possible depuis Access 2007,
à condition que le champ soit de type Memo et que l'on ait défini la
propriété "Format du Texte" à "Texte enrichi"

On peut donc dorénavant appliquer des mises en formes multiples et
différentes sur plusieurs parties du texte d'un champ de type Memo.
J'arrive donc manuellement à mettre en forme le caractère qui précè de
le curseur dans un tel champ.
Normalement quasiment toute manipulation "manuelle" doit pouvoir
s'écrire en VBA afin de l'automatiser. : ce qui est précisément mon
objectif.
Toute la difficulté ici consiste à connaître la position du curseur
puis à sélectionner ensuite la caractère qui le précède.

Wait and see...
Avatar
Thierry (ze Titi)
Regarde du côté des propriétés SelStart et SelLength du contrôle, ça
devrait répondre à ton besoin.

Message du mardi 18/09/2007

"Word et access c'est pas la même chose" : je confirme; et même Excel
diffère (un peu, beaucoup, passionnément, à la folie) des 2
précédents ;-)

"Dans access une propriété s'applique a un contrôle de façon
globale." : vrai jusqu'à Access 2003 mais possible depuis Access 2007,
à condition que le champ soit de type Memo et que l'on ait défini la
propriété "Format du Texte" à "Texte enrichi"

On peut donc dorénavant appliquer des mises en formes multiples et
différentes sur plusieurs parties du texte d'un champ de type Memo.
J'arrive donc manuellement à mettre en forme le caractère qui précède
le curseur dans un tel champ.
Normalement quasiment toute manipulation "manuelle" doit pouvoir
s'écrire en VBA afin de l'automatiser. : ce qui est précisément mon
objectif.
Toute la difficulté ici consiste à connaître la position du curseur
puis à sélectionner ensuite la caractère qui le précède.

Wait and see...


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Patrick_67
"Regarde du côté des propriétés SelStart et SelLength du contrôle , ça
devrait répondre à ton besoin. "

Merci beaucoup Thierry pour cette piste intéressante...

Je m'en vais de ce pas faire des tests...
Avatar
Thierry (ze Titi)
Tiens-nous au courant, ça pourra aider d'autres personnes, très
certainement.

Bon courage!


Message du mardi 18/09/2007

"Regarde du côté des propriétés SelStart et SelLength du contrôle, ça
devrait répondre à ton besoin. "

Merci beaucoup Thierry pour cette piste intéressante...

Je m'en vais de ce pas faire des tests...


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Patrick_67
Voici un point rapide après des premiers tests :
* j'ai créé un champ "Commentaire" dans un formulaire
* ce contrôle est issu d'un champ "Commentaire" d'une table (champ de
type "mémo" dont la propriété "format de texte" = "texte enrichi")
* pour tester, je saisis ceci dans ce champ "Ceci est un test"
* puis j'ai écris le code suivant associé à l'évènement "Double-c lic"
sur ce champ commentaire
* cette petite procédure affiche (via un Msgbox) le caractère se
trouvant à gauche du curseur au moment d'un double-clic

'-------------------------------------------------------------------------- --------------------------------------------------------------
Private Sub Commentaire_DblClick(Cancel As Integer)

If Me.Commentaire.SelStart > 0 Then
MsgBox "caractère précédent : " & Mid(Me.Commentaire,
Me.Commentaire.SelStart, 1)
End If

End Sub
'-------------------------------------------------------------------------- --------------------------------------------------------------

Par exemple, si le double-clic se fait entre le "u" et le "n" de "ceci
est un test", la procédure va afficher un "u".

J'ai donc bien réussi à identifier la caractère se trouvant à gauche
du curseur.

Par contre je bute ensuite pour les 2 étapes suivantes de mon
objectif :
1. sélectionner par VBA le caractère précédent le double-clic (le même
qui s'affiche en ce moment via l'instruction Msgbox)
2. puis mettre en forme automatiquement ce caractère (exemple : en
gras et en couleur de police rouge)

En résume, comment faire par VBA :
1. une sélection partielle d'un champ mémo
2. puis ensuite appliquer une mise en forme personnalisée à cette
sélection ?

Merci d'avance pour toute nouvelle idée en ce sens...
Avatar
Fabien
"Word et access c'est pas la même chose" : je confirme; et même Excel
diffère (un peu, beaucoup, passionnément, à la folie) des 2
précédents ;-)

"Dans access une propriété s'applique a un contrôle de façon
globale." : vrai jusqu'à Access 2003 mais possible depuis Access 2007,
à condition que le champ soit de type Memo et que l'on ait défini la
propriété "Format du Texte" à "Texte enrichi"

On peut donc dorénavant appliquer des mises en formes multiples et
différentes sur plusieurs parties du texte d'un champ de type Memo.
J'arrive donc manuellement à mettre en forme le caractère qui précède
le curseur dans un tel champ.
Normalement quasiment toute manipulation "manuelle" doit pouvoir
s'écrire en VBA afin de l'automatiser. : ce qui est précisément mon
objectif.
Toute la difficulté ici consiste à connaître la position du curseur
puis à sélectionner ensuite la caractère qui le précède.

Wait and see...


Autant pour moi, Je pensais ( à tord) que tu voulais appliquer cette

mise en forme sur un controle autre que le Memo ;-)
Bon chance ..

Avatar
Thierry (ze Titi)
Citation d'un post précédent:

En Access, programmer la mise en forme ne me pose pas de problème.


Repris du dernier post:

2. puis ensuite appliquer une mise en forme personnalisée à cette
sélection ?


Un peu contradictoire tout ça, je trouve...

En résume, comment faire par VBA :
1. une sélection partielle d'un champ mémo


If Me.Commentaire.SelStart > 0 Then
Me.Commentaire.SelStart=Me.Commentaire.SelStart-1
Me.Commentaire.SelLength=1
End If

Pour l'application de la mise en forme, je ne suis pas compétent.

'----------------------------------------------------------------------------------------------------------------------------------------
Private Sub Commentaire_DblClick(Cancel As Integer)

If Me.Commentaire.SelStart > 0 Then
MsgBox "caractère précédent : " & Mid(Me.Commentaire,
Me.Commentaire.SelStart, 1)
End If

End Sub
'----------------------------------------------------------------------------------------------------------------------------------------

Par exemple, si le double-clic se fait entre le "u" et le "n" de "ceci
est un test", la procédure va afficher un "u".

J'ai donc bien réussi à identifier la caractère se trouvant à gauche
du curseur.

Par contre je bute ensuite pour les 2 étapes suivantes de mon
objectif :
1. sélectionner par VBA le caractère précédent le double-clic (le même
qui s'affiche en ce moment via l'instruction Msgbox)
2. puis mettre en forme automatiquement ce caractère (exemple : en
gras et en couleur de police rouge)

En résume, comment faire par VBA :
1. une sélection partielle d'un champ mémo
2. puis ensuite appliquer une mise en forme personnalisée à cette
sélection ?

Merci d'avance pour toute nouvelle idée en ce sens...


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info