inserer du texte dans une zone de saisie, au niveau du curseur
7 réponses
Antoine Moreau
Bonjour,
J'ai un petit module qui comporte une zone de saisie de texte et des
boutons. Quand j'appuie sur un bouton, ça met du texte dans la zone de
saisie (un peu comme la calculatrice Windows avec la zone d'affichage et les
chiffres)
Je voudrais pouvoir cliquer a un endroit dans le texte, et que les
prochaines insertion se fasse à cette endroit.
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur
entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir
"1239456" dans ma zone de saisie
Mais je ne sais pas comment récupérer la position du curseur dans la
zone de saisie. Je cherche donc soit une fonction qui me fournis ça, soit
une idée pour récupérer l'endroit ou j'ai cliquer / déplacer le curseur (en
cas d'utilisation de la tabulation et/ou des flèches de directions)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred
Dans son message Antoine Moreau nous dit :
Bonjour,
J'ai un petit module qui comporte une zone de saisie de texte et des boutons. Quand j'appuie sur un bouton, ça met du texte dans la zone de saisie (un peu comme la calculatrice Windows avec la zone d'affichage et les chiffres) Je voudrais pouvoir cliquer a un endroit dans le texte, et que les prochaines insertion se fasse à cette endroit.
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Mais je ne sais pas comment récupérer la position du curseur dans la zone de saisie. Je cherche donc soit une fonction qui me fournis ça, soit une idée pour récupérer l'endroit ou j'ai cliquer / déplacer le curseur (en cas d'utilisation de la tabulation et/ou des flèches de directions)
Pour info c'est dans une appli Acces en VBA
Merci d'avance
Bonsoir, Y a-t-il une propriété SelStart sur le TextBox utilisé dans les formulaires Access ? Si oui, tu as ta réponse.
-- Fred
Dans son message OK0WHu4ZFHA.228@TK2MSFTNGP12.phx.gbl
Antoine Moreau nous dit :
Bonjour,
J'ai un petit module qui comporte une zone de saisie de texte et
des boutons. Quand j'appuie sur un bouton, ça met du texte dans la
zone de saisie (un peu comme la calculatrice Windows avec la zone
d'affichage et les chiffres)
Je voudrais pouvoir cliquer a un endroit dans le texte, et que les
prochaines insertion se fasse à cette endroit.
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon
curseur entre le '3' et le '4', et je clique sur le bouton '9', je
veux alors avoir "1239456" dans ma zone de saisie
Mais je ne sais pas comment récupérer la position du curseur dans
la zone de saisie. Je cherche donc soit une fonction qui me fournis
ça, soit une idée pour récupérer l'endroit ou j'ai cliquer / déplacer
le curseur (en cas d'utilisation de la tabulation et/ou des flèches
de directions)
Pour info c'est dans une appli Acces en VBA
Merci d'avance
Bonsoir,
Y a-t-il une propriété SelStart sur le TextBox utilisé dans les formulaires
Access ?
Si oui, tu as ta réponse.
J'ai un petit module qui comporte une zone de saisie de texte et des boutons. Quand j'appuie sur un bouton, ça met du texte dans la zone de saisie (un peu comme la calculatrice Windows avec la zone d'affichage et les chiffres) Je voudrais pouvoir cliquer a un endroit dans le texte, et que les prochaines insertion se fasse à cette endroit.
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Mais je ne sais pas comment récupérer la position du curseur dans la zone de saisie. Je cherche donc soit une fonction qui me fournis ça, soit une idée pour récupérer l'endroit ou j'ai cliquer / déplacer le curseur (en cas d'utilisation de la tabulation et/ou des flèches de directions)
Pour info c'est dans une appli Acces en VBA
Merci d'avance
Bonsoir, Y a-t-il une propriété SelStart sur le TextBox utilisé dans les formulaires Access ? Si oui, tu as ta réponse.
-- Fred
ng
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur
entre le '3' et le '4', et je clique sur le bouton '9', je veux alors
avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Fred
Dans son message ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
-- Fred
Dans son message Ob5UWhOaFHA.3040@TK2MSFTNGP14.phx.gbl
ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon
curseur entre le '3' et le '4', et je clique sur le bouton '9', je
veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour,
SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la
position du curseur.
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
-- Fred
Michel
Fred a écrit :
Dans son message ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
Il te reste donc les Api's
'API function declarations Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Dans son message Ob5UWhOaFHA.3040@TK2MSFTNGP14.phx.gbl
ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon
curseur entre le '3' et le '4', et je clique sur le bouton '9', je
veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour,
SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la
position du curseur.
Il te reste donc les Api's
'API function declarations
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As
Long, ByVal wParam As Long, lParam As Any) As Long
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
Il te reste donc les Api's
'API function declarations Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
Il te reste donc les Api's
'API function declarations Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 'Window messages sent to the textbox Private Const EM_CANUNDO = &HC6 Private Const EM_GETFIRSTVISIBLELINE = &HCE Private Const EM_GETLINE = &HC4 Private Const EM_GETLINECOUNT = &HBA Private Const EM_GETMODIFY = &HB8 Private Const EM_LINEFROMCHAR = &HC9 Private Const EM_LINEINDEX = &HBB Private Const EM_LINELENGTH = &HC1 Private Const EM_SETMODIFY = &HB9 Private Const EM_UNDO = &HC7
Bonjour, Je pense que le SelStart que j'ai mentionné avant-hier fera très bien l'affaire. A condition que cela existe dans les contrôles de Access, mais je n'en doute pas trop.
Quelque chose du style : 8<--------- TB.Text = Left(TB.Text, TB.SelStart) & Car & Mid(TB.Text, TB.SelStart+1) 8<-------- où "TB" est le textbox et "Car" le caractère à insérer (caption du bouton je suppose)
Enfin, je suppose qu'il a trouvé sa solution, pas de nouvelles depuis 2 jours.
-- Fred
Dans son message HFgoe.68800$Of5.39872@nntpserver.swip.net
Michel nous dit :
Fred a écrit :
Dans son message Ob5UWhOaFHA.3040@TK2MSFTNGP14.phx.gbl
ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon
curseur entre le '3' et le '4', et je clique sur le bouton '9', je
veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour,
SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il
veut la position du curseur.
Il te reste donc les Api's
'API function declarations
Private Declare Function SendMessage Lib "user32" Alias
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam
As Long, lParam As Any) As Long
'Window messages sent to the textbox
Private Const EM_CANUNDO = &HC6
Private Const EM_GETFIRSTVISIBLELINE = &HCE
Private Const EM_GETLINE = &HC4
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETMODIFY = &HB8
Private Const EM_LINEFROMCHAR = &HC9
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1
Private Const EM_SETMODIFY = &HB9
Private Const EM_UNDO = &HC7
Bonjour,
Je pense que le SelStart que j'ai mentionné avant-hier fera très bien
l'affaire.
A condition que cela existe dans les contrôles de Access, mais je n'en doute
pas trop.
Quelque chose du style :
8<---------
TB.Text = Left(TB.Text, TB.SelStart) & Car & Mid(TB.Text, TB.SelStart+1)
8<--------
où "TB" est le textbox et "Car" le caractère à insérer (caption du bouton je
suppose)
Enfin, je suppose qu'il a trouvé sa solution, pas de nouvelles depuis 2
jours.
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
Il te reste donc les Api's
'API function declarations Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 'Window messages sent to the textbox Private Const EM_CANUNDO = &HC6 Private Const EM_GETFIRSTVISIBLELINE = &HCE Private Const EM_GETLINE = &HC4 Private Const EM_GETLINECOUNT = &HBA Private Const EM_GETMODIFY = &HB8 Private Const EM_LINEFROMCHAR = &HC9 Private Const EM_LINEINDEX = &HBB Private Const EM_LINELENGTH = &HC1 Private Const EM_SETMODIFY = &HB9 Private Const EM_UNDO = &HC7
Bonjour, Je pense que le SelStart que j'ai mentionné avant-hier fera très bien l'affaire. A condition que cela existe dans les contrôles de Access, mais je n'en doute pas trop.
Quelque chose du style : 8<--------- TB.Text = Left(TB.Text, TB.SelStart) & Car & Mid(TB.Text, TB.SelStart+1) 8<-------- où "TB" est le textbox et "Car" le caractère à insérer (caption du bouton je suppose)
Enfin, je suppose qu'il a trouvé sa solution, pas de nouvelles depuis 2 jours.
-- Fred
Zoury
> Je pense que le SelStart que j'ai mentionné avant-hier fera très bien l'affaire. A condition que cela existe dans les contrôles de Access, mais je n'en
doute
pas trop.
Yep SelStart existe.
Je crois que l'utilisation d'APIs demandant des handles de fenêtre (hWnd) en VBA est assez çomplexe étant donnée que la propriété hWnd n'est pas exposée. :OP
-- Cordialement Yanick MVP pour Visual Basic
> Je pense que le SelStart que j'ai mentionné avant-hier fera très bien
l'affaire.
A condition que cela existe dans les contrôles de Access, mais je n'en
doute
pas trop.
Yep SelStart existe.
Je crois que l'utilisation d'APIs demandant des handles de fenêtre (hWnd) en
VBA est assez çomplexe étant donnée que la propriété hWnd n'est pas exposée.
:OP
> Je pense que le SelStart que j'ai mentionné avant-hier fera très bien l'affaire. A condition que cela existe dans les contrôles de Access, mais je n'en
doute
pas trop.
Yep SelStart existe.
Je crois que l'utilisation d'APIs demandant des handles de fenêtre (hWnd) en VBA est assez çomplexe étant donnée que la propriété hWnd n'est pas exposée. :OP
-- Cordialement Yanick MVP pour Visual Basic
Antoine Moreau
Re bonjour
Je suis désolé, j'avais complètement oublié que j'avais posé la question. Vu que je n'y arrivais pas, j'etais passé a autre chose
Merci pour vos réponses
Et non, ça ne marche pas Il me dit "Impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé."
En effet, le focus est passé sur le bouton au moment ou j'appuye dessus Si je fais un TB.SetFocus, ça ne mets pas d'erreur, mais le curseur est revenu au début du control
(en fait je sens qu'il va falloir que je "mémorise" la position du curseur)
Antoine
"Fred" a écrit dans le message de news: uhBIN%
Dans son message HFgoe.68800$ Michel nous dit :
Fred a écrit :
Dans son message ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
Il te reste donc les Api's
'API function declarations Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 'Window messages sent to the textbox Private Const EM_CANUNDO = &HC6 Private Const EM_GETFIRSTVISIBLELINE = &HCE Private Const EM_GETLINE = &HC4 Private Const EM_GETLINECOUNT = &HBA Private Const EM_GETMODIFY = &HB8 Private Const EM_LINEFROMCHAR = &HC9 Private Const EM_LINEINDEX = &HBB Private Const EM_LINELENGTH = &HC1 Private Const EM_SETMODIFY = &HB9 Private Const EM_UNDO = &HC7
Bonjour, Je pense que le SelStart que j'ai mentionné avant-hier fera très bien l'affaire. A condition que cela existe dans les contrôles de Access, mais je n'en doute pas trop.
Quelque chose du style : 8<--------- TB.Text = Left(TB.Text, TB.SelStart) & Car & Mid(TB.Text, TB.SelStart+1) 8<-------- où "TB" est le textbox et "Car" le caractère à insérer (caption du bouton je suppose)
Enfin, je suppose qu'il a trouvé sa solution, pas de nouvelles depuis 2 jours.
-- Fred
Re bonjour
Je suis désolé, j'avais complètement oublié que j'avais posé la
question. Vu que je n'y arrivais pas, j'etais passé a autre chose
Merci pour vos réponses
Et non, ça ne marche pas
Il me dit "Impossible de faire référence à une propriété ou de la
définir pour un contrôle si ce dernier n'est pas activé."
En effet, le focus est passé sur le bouton au moment ou j'appuye dessus
Si je fais un TB.SetFocus, ça ne mets pas d'erreur, mais le curseur est
revenu au début du control
(en fait je sens qu'il va falloir que je "mémorise" la position du
curseur)
Antoine
"Fred" <foleide@libre.france> a écrit dans le message de news:
uhBIN%23PaFHA.4040@TK2MSFTNGP14.phx.gbl...
Dans son message HFgoe.68800$Of5.39872@nntpserver.swip.net
Michel nous dit :
Fred a écrit :
Dans son message Ob5UWhOaFHA.3040@TK2MSFTNGP14.phx.gbl
ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon
curseur entre le '3' et le '4', et je clique sur le bouton '9', je
veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour,
SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il
veut la position du curseur.
Il te reste donc les Api's
'API function declarations
Private Declare Function SendMessage Lib "user32" Alias
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam
As Long, lParam As Any) As Long
'Window messages sent to the textbox
Private Const EM_CANUNDO = &HC6
Private Const EM_GETFIRSTVISIBLELINE = &HCE
Private Const EM_GETLINE = &HC4
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETMODIFY = &HB8
Private Const EM_LINEFROMCHAR = &HC9
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1
Private Const EM_SETMODIFY = &HB9
Private Const EM_UNDO = &HC7
Bonjour,
Je pense que le SelStart que j'ai mentionné avant-hier fera très bien
l'affaire.
A condition que cela existe dans les contrôles de Access, mais je n'en
doute pas trop.
Quelque chose du style :
8<---------
TB.Text = Left(TB.Text, TB.SelStart) & Car & Mid(TB.Text, TB.SelStart+1)
8<--------
où "TB" est le textbox et "Car" le caractère à insérer (caption du bouton
je suppose)
Enfin, je suppose qu'il a trouvé sa solution, pas de nouvelles depuis 2
jours.
Je suis désolé, j'avais complètement oublié que j'avais posé la question. Vu que je n'y arrivais pas, j'etais passé a autre chose
Merci pour vos réponses
Et non, ça ne marche pas Il me dit "Impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé."
En effet, le focus est passé sur le bouton au moment ou j'appuye dessus Si je fais un TB.SetFocus, ça ne mets pas d'erreur, mais le curseur est revenu au début du control
(en fait je sens qu'il va falloir que je "mémorise" la position du curseur)
Antoine
"Fred" a écrit dans le message de news: uhBIN%
Dans son message HFgoe.68800$ Michel nous dit :
Fred a écrit :
Dans son message ng nous dit :
Salut,
Par exemple, j'ai "123456" dans ma zone de saisie. Je met mon curseur entre le '3' et le '4', et je clique sur le bouton '9', je veux alors avoir "1239456" dans ma zone de saisie
Pour info c'est dans une appli Acces en VBA
Si c'est comme en VB, regarde la propriété SelText :
MonTextBox.SelText = "9"
Bonjour, SelText renvoie du texte sélectionné. Ce qui n'est pas le cas. Il veut la position du curseur.
Il te reste donc les Api's
'API function declarations Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 'Window messages sent to the textbox Private Const EM_CANUNDO = &HC6 Private Const EM_GETFIRSTVISIBLELINE = &HCE Private Const EM_GETLINE = &HC4 Private Const EM_GETLINECOUNT = &HBA Private Const EM_GETMODIFY = &HB8 Private Const EM_LINEFROMCHAR = &HC9 Private Const EM_LINEINDEX = &HBB Private Const EM_LINELENGTH = &HC1 Private Const EM_SETMODIFY = &HB9 Private Const EM_UNDO = &HC7
Bonjour, Je pense que le SelStart que j'ai mentionné avant-hier fera très bien l'affaire. A condition que cela existe dans les contrôles de Access, mais je n'en doute pas trop.
Quelque chose du style : 8<--------- TB.Text = Left(TB.Text, TB.SelStart) & Car & Mid(TB.Text, TB.SelStart+1) 8<-------- où "TB" est le textbox et "Car" le caractère à insérer (caption du bouton je suppose)
Enfin, je suppose qu'il a trouvé sa solution, pas de nouvelles depuis 2 jours.