Fonction

Résolu
Messages postés
12
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
-
Messages postés
12
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
-
J'aimerai faire une fonction : Public Function Lecture01(ByVal Texte01 As String, ByVal x As Integer, ByVal y As Integer)
Qui me retourne après exécution les variables x et y. Car la Fonction agit directement sur les valeur de x et y pour reperer une position.
Est ce que c'est possible ?
Comment faire ?

8 réponses

Messages postés
12
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006

c'est bon j'ai trouvé j'utilise un Getcursorpos
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Oui c'est possible il suffit de remplacer la définition de la fonction et d'utiliser ByRef au lieu de ByVal

Public Function Lecture01(ByVal Texte01 As String, ByVal x As Integer, ByVal y As Integer) 

'Devient alors
Public Function Lecture01(ByVal Texte01 As String, ByRef x As Integer, ByRef y As Integer) 

'Ou bien puisque c'est ByRef le mode par défaut
Public Function Lecture01(ByVal Texte01 As String, x As Integer, y As Integer) 

 

<small> Coloration syntaxique automatique [AFCK]</small>
       

Théoriquement cela devrait répondre à ta question

@+,   Ju£i?n
Messages postés
12
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006

heum c'est bisard ca marche pas bon je vais te donner le code on verra tout de suite s'il y a un erreur

Private Sub Command1_Click()
Test = Lecture01("
L’effectif, au nombre", 850, 200)
If Test = True Then
    Label1.Caption = x
    Label2.Caption = y
End If
End Sub

Public Function Lecture01(ByVal Texte01 As String, x As Integer, y As Integer) As Boolean
Dim z As Integer
z = 7
Dim w As Integer
Dim u As Integer
w = x
u = y
rego:
x = w
y = u
Dim Taillestr As Long
Dim Texttest As String
Texttest = ""
Taillestr = Len(Texte01)
While (y < 862) And (Texte01 <> Mid(Texttest, 1, Taillestr))
    y = y + z
    SetCursorPos x, y
    sapiSleep 10
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
    sapiSleep 500
    SendKeys "^{c}"
    DoEvents
    Texttest = Clipboard.GetText()
Wend
If (z = 1) And (Texte01 <> Mid(Texttest, 1, Taillestr)) Then
Lecture01 = False
Else
    If Texte01 = Mid(Texttest, 1, Taillestr) Then
    Lecture01 = True
    Else
        z = z - 2
        GoTo rego
    End If
End If
End Function

'et il me retourne 0 et 0 dans les label'
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Je vais regarder ton code mais sans aller plus loin essaie ceic pour voir si cela ne regle pas ton problème.
Private Sub Command1_Click() 
Dim ValX As Integer 
Dim ValY As Integer 
ValX = 850 
ValY = 200 
Test = Lecture01(" L'effectif, au nombre", ValX, ValY) 
If Test = True Then 
    Label1.Caption = Valx 
    Label2.Caption = Valy 
End If 
End Sub 

 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+,   Ju£i?n
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
Pourquoi une fonction ?
Une simple procédure fera l' affaire !

chaibat
Messages postés
12
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006

je suis noob tu ferais comment ?
je ne connais pas encore le vocabulaire lié a Vbasic c'est quoi une procédure
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,


En revanche même si cela ne nous dérange pas de t'aider, ce n'est pas à NOUS de perdre du temps a chercher les déclarations d'API et de Constantes




Private Declare Function SetCursorPos Lib "user32" ByVal x As Long, ByVal y As Long) As Long 
Private Declare Sub Sleep Lib "kernel32" ByVal dwMilliseconds As Long) 
Private Declare Sub mouse_event Lib "user32" ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) 
Private Const MOUSEEVENTF_LEFTDOWN = &H2  '  left button down
Private Const MOUSEEVENTF_LEFTUP = &H4   '  left button up
 







<small> Coloration syntaxique automatique [AFCK]</small>

       





De plus ton code hors du reste est inutilisable et non testable .
Qu est ce que les variable  cButt et dwEI  et que contiennent elles lors de l'appel de Mouse_Event






@+,   Ju£i?n
Messages postés
12
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006

ok désoler

'declaration'
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function SetCursorPos& Lib "user32" (ByVal x As Long, ByVal y As Long)
Private Declare Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

'pour utiliser la sourie'
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Const MOUSEEVENTF_WHEEL = &H80
Const MOUSEEVENTF_XDOWN = &H100
Const MOUSEEVENTF_XUP = &H200
Const WHEEL_DELTA = 120
Const XBUTTON1 = &H1
Const XBUTTON2 = &H2
'pour placer le curseur'
Dim x As Long
Dim y As Long
Dim Test As Boolean