begin process at 2012 02 14 20:02:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Problème CursorPos dans TextBox en VBA


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Drikce06

Membre Club
salut la propriété hwnd n'existe pas en VBA, si c'est un userform voir le snippet de mortalino sur codyx > handle d'un userform en VBA.

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
lundi 4 décembre 2006 à 12:02:48 | Re : Problème CursorPos dans TextBox en VBA

Drikce06

Membre Club

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

Membre Club


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

Membre Club
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 StringByVal 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

Membre Club


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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales