Accueil > Forum > > > > Problème CursorPos dans TextBox en VBA
Problème CursorPos dans TextBox en VBA
lundi 4 décembre 2006 à 11:55:19 |
Problème CursorPos dans TextBox en VBA

drakkard
|
Bonjour Bonjour... C'est plutôt une question VBA que VB... J'ai un problème pour transposer cette propriété de VB Call SendMessage(Text1.hwnd, EM_GETSEL, 0, cursorPos) dans VBA .J'ai le message d'erreur suivant : "membre de méthode ou de données introuvable" sur hwnd. J'ai déclaré auparavant : 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 Private Const EM_GETSEL = &HB0 Private Const EM_SETSEL = &HB1 puis dans Private Sub Text1_KeyPress( ByVal KeyAscii As MSForms.ReturnInteger) Dim cursorPos As Long Donc si quelqu'un a une petite idée, merci d'avance. Je rapelle que c'est pour du VBA Bidouille & Cie
|
|
lundi 4 décembre 2006 à 11:59:21 |
Re : Problème CursorPos dans TextBox en VBA
|
lundi 4 décembre 2006 à 12:02:48 |
Re : Problème CursorPos dans TextBox en VBA

Drikce06
|
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
· hWnd Identifies the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.
· Msg Specifies the message to be sent.
· wParam Specifies additional message-specific information.
· lParam Specifies additional message-specific information.
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas: 
|
|
lundi 4 décembre 2006 à 18:14:35 |
Re : Problème CursorPos dans TextBox en VBA

mortalino
|
Salut, perso, je ne sais pas comment trouver le hwnd d'un contrôle. L'api FindControl n'existe pas  Voit si tu peux trouver la fonction, et après avoir déterminé le hWnd de ton textbox, tu n'auras aucun souci. @++
--Mortalino-- Le mystérieux chevalier, "Provençal, le Gaulois"
|
|
lundi 4 décembre 2006 à 18:28:46 |
Re : Problème CursorPos dans TextBox en VBA

drakkard
|
Salut à tous merci pour vos réponse... Mortalino j'ai trouvé ça sur le Web, tu en penses quoi ? Moi je suis en train de voir si je peux l'adapter à mon cas. Option Explicit Private Declare Function GetFocus Lib "user32" () As Long
Private Declare Function FindWindow _ Lib "user32" _ Alias "FindWindowA" _ ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String _ ) _ As Long
Private Declare Function GetClassName _ Lib "user32" Alias "GetClassNameA" _ (ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) _ As Long
Property Get hwnd() As Long 'custom hWnd property for the Userform class hwnd = FindWindow _ ( _ lpClassName:=IIf(Val(Application.Version) > 8, _ "ThunderDFrame", _ "ThunderXFrame"), _ lpWindowName:=Me.Caption _ ) End Property
Private Function GetTextbox_hWnd() As Long TextBox1.SetFocus GetTextbox_hWnd = GetFocus() End Function
Private Sub CommandButton1_Click() TextBox1.Value = GetTextbox_hWnd MsgBox Me.hwnd End Sub
Private Sub CommandButton2_Click() Dim buffer As String Let buffer = String(256, CStr(0)) Call GetClassName(GetTextbox_hWnd(), buffer, Len(buffer)) MsgBox buffer End Sub
Bidouille & Cie
|
|
lundi 4 décembre 2006 à 18:48:21 |
Re : Problème CursorPos dans TextBox en VBA

mortalino
|
Réponse acceptée !
Je t'ai simplifié le code pour trouver le hwnd (merci pour le bout de code ^^) :  Option Explicit
Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetFocus Lib "user32" () As Long
Private Function GetControl_hWnd(ByVal oCtl As Control) As Long oCtl.SetFocus GetControl_hWnd = GetFocus() End Function
Private Sub UserForm_Initialize() Dim hwnd As Long Dim hwnd2 As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _ "X", "D") & "Frame", Me.Caption) ' handle
UserForm hwnd2 = GetControl_hWnd(TextBox1) '
handle Control (ici TextBox1) ' Pour avoir le
Hnadle d'un autre control, mets son nom en parenthèse
MsgBox "Handle UserForm :
" & hwnd & vbCrLf & _ "Handle TextBox1 : " & hwnd2 End Sub

~ Mortalino
~ Et sinon, qu'est ce que tu cherches à faire avec SendMessage ? Tu veux envoyer quoi dans cette TextBox ? @++
--Mortalino-- Le mystérieux chevalier, "Provençal, le Gaulois"
|
|
lundi 4 décembre 2006 à 19:31:39 |
Re : Problème CursorPos dans TextBox en VBA

drakkard
|
Merci Mortalino, je vais tester. Bah..., disons que je voulais contrôler la frappe clavier pour empêcher que l'utilisateur ne tape n'importe quoi... Je ne sais pas si c'est vraiment la bonne méthode, peut-être la plus rapide.... Bidouille & Cie
|
|
mardi 5 décembre 2006 à 06:58:09 |
Re : Problème CursorPos dans TextBox en VBA

mortalino
|
Tu peux directement contrôler les touches depuis l'évènement KeyPress, mais ça dépend de ce que tu veux. Qu'est ce que tu veux faire exactement ? Que veux tu empêcher sur la frappe de l'utilisateur ? Pour ton cas SendMessage n'est pas approprié, il sert soit à envoyer du texte dans un contrôle, soit il sert à sélectionner un item d'une ListBox selon ce qui est saisie quelque part. @++
--Mortalino-- Le mystérieux chevalier, "Provençal, le Gaulois"
|
|
mardi 5 décembre 2006 à 14:30:02 |
Re : Problème CursorPos dans TextBox en VBA

drakkard
|
Salut Mortalino, merci encore pour ton aide. Ce que je cherche à faire, c'est un texte box ( qui doit contenir une date au format dd/mm/yyyy ) et donc je veux que lors de la frappe soit vérifié le format. Que l'utilisateur ne puisse pas mettre un truc du genre 424/456/72... J'avoue que je le fais sous VB avec le send message, mais si tu me dis que c'est pas la meilleure méthode ; je suis preneur pour meilleure idée... Merci Bidouille & Cie
|
|
mardi 5 décembre 2006 à 15:40:33 |
Re : Problème CursorPos dans TextBox en VBA

drakkard
|
Réponse acceptée !
Mouais...., bon bah honte à moi... en cherchant un peu plus, j'ai fini par trouver ce que je voulais ; les contrôles DTPiker... Merci à toi Mortalino pour ton aide... Bidouille & Cie
|
|
Cette discussion est classée dans : vba, problème, hwnd, em, cursorpos
Répondre à ce message
Sujets en rapport avec ce message
Problème de license avec le controle FlexGrid sous VBA [ par yakcutter ]
J'utilise VBA et lorsque je veux créer un contrôle Microsoft FlexGrid (et même certains autres) VBA me lance " Le contrôle n'a pas été créé parce qu'i
Problème lier a VBA et les lien ODBC sur les Strings "DIFFICILE" [ par Nitocris ]
Bonjour, J'essaye de renseigner des tables d'une base de donnée ("Sage") via des drivers ODBC et un programme en VBAA partir d'une feuille Excel r
Problème VBA [ par garfunkel ]
Je travaille sous access 97, j'ai plusieurs groupes d'utilisateurs et j'aimerais que lorsque j'ouvre un formulaire je test le groupe de l'utilisateur,
problème avec les date en VBA et leur formatage !!!!!! URGENT !!!!!! [ par nitocris ]
Je suis d'en une application ACCESS 2000Et je veux filtrer un formulaire via le code.Le problème c'est que le filtre agit sur une date.or la date est
Problème avec Hwnd !! [ par jul ]
Bonjour,J'ai le bout de code suivant dans une forme:Private Declare Function SetWindowPos Lib "User32" (ByVal Hwnd As Long, _ByVal hWndInsertAfter _As
problème événement [ par Belec ]
BelecSalut,G un pti pb sur VBA.J'aimerai qu ma sub redonne la main à l'applic (excel par ex)pourque l'appli puiss afficher une boite de dialogue prop
Problème de type en VBA Access [ par moucherman ]
Moucherman Bonjour chers programmeurs,j'ai un gros problème sur une appli Access. en effet j'aimerais remplir mes tables par cod
ListBox [ par doboulan ]
DoboulanBonjour à tous!Je suis novice en VBA et j'ai besoin d'aide pour terminer une application professionnelle dans EXCELJe me heurte à 2 problèmes:
Fonction replace en VBA, problème [ par Spylover ]
Bonjour,j'utilise chez moi Office XP et j'utilise la fonction replace(,,,) qui fonctionne très bien, à titre pro, j'essaie d'utiliser cette fonction e
Problème fonction replace(,,,) en VBA [ par Spylover ]
Bonjour,j'utilise chez moi Office XP et j'utilise la fonction replace(,,,) qui fonctionne très bien, à titre pro, j'essaie d'utiliser cette fonction e
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|