témoin verr num qui s'éteint et s'allume tout le temps
2 réponses
Gundt
bonjour à tous,
J'ai un souci avec un phénomène étrange et qui devient vite agaçant car
il engendre des saisies de données erronées.
Dans l'application que j'ai créée sous Access 97, à chaque fois que
l'utilisateur choisit une valeur dans une une liste déroulante qui
s'ouvre automatiquement, 3 fois sur 4 environ, le témoin verr num s'éteint.
J'ai donc ajouté un petit script qui lance l'activation de verr num au
moment du déroulement de la liste : malheureusement, si le témoin verr
num ne s'était pas éteint, c'est l'effet inverse qui se produit.
Comme l'utilisateur doit saisir des quantités juste après avoir choisi
un article dans le déroulant, cela donne souvent des données
incohérentes (le curseur change de ctrl ou d epage écran) ou des
messages d'erreur car le curseur ne se trouve plus sur le ctrl quantité
et que c'est une valeur de saisie obligatoire.
J'ai essayé l'application (qui est faite pour tourner en runtime) sur
XP, sur 2000 et sur 98. J'observe le même phénomène y compris sur mon
poste où est installé Access 97.
Le code que je rajoute à l'ouverture de la liste déroulante, c'est :
Function Ouvreliste()
On Error GoTo Ouvreliste_Err
SendKeys "%{DOWN}"
numk
numk
Ouvreliste_Exit:
Exit Function
'déclaration de type pour la version de l'os
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
'déclaration des API
Private Declare Function GetVersionEx Lib "kernel32" Alias _
"GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long
'déclaration des variables
Dim o As OSVERSIONINFO
Dim numlockstate As Boolean
Dim scrolllockstate As Boolean
Dim capslockstate As Boolean
' verrouillage de la touche numlock
Function numk()
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
numlockstate = keys(VK_NUMLOCK)
If numlockstate <> True Then
'cas de win95 ou win98
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(VK_NUMLOCK) = 1
SetKeyboardState keys(0)
''cas de win NT
'dans le cas de NT, enlever les ' ci-après
'ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then
' 'simulation de la pression de la touche
' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
' 'simulation de la touche relâchée
' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or
KEYEVENTF_KEYUP, 0
End If
End If
End Function
' verrouillage de la touche capslock
Function capsk()
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
capslockstate = keys(VK_CAPITAL)
If capslockstate <> True Then
'cas de win95 ou win98
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(VK_CAPITAL) = 1
SetKeyboardState keys(0)
'cas de win NT
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then
'simulation de la pression de la touche
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'simulation de la touche relâchée
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or
KEYEVENTF_KEYUP, 0
End If
End If
End Function
' verrouillage de la touche scrollock
Function scrollk()
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
scrolllockstate = keys(VK_SCROLL)
If scrolllockstate <> True Then
'cas de win95 ou win98
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(VK_SCROLL) = 1
SetKeyboardState keys(0)
'cas de win NT
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then
'simulation de la pression de la touche
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'simulation de la touche relâchée
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or
KEYEVENTF_KEYUP, 0
End If
End If
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
ze Titi
Salut Gundt !
Le problème viendrai du SendKeys que ça ne m'étonnerait qu'à moitié...
Utilise plutôt:
taListe.DropDown pour lancer l'ouverture de la liste...
En ce jour exceptionnel du jeudi 08/03/2007, tu nous as très généreusement gratifié du message suivant:
bonjour à tous,
J'ai un souci avec un phénomène étrange et qui devient vite agaçant car il engendre des saisies de données erronées. Dans l'application que j'ai créée sous Access 97, à chaque fois que l'utilisateur choisit une valeur dans une une liste déroulante qui s'ouvre automatiquement, 3 fois sur 4 environ, le témoin verr num s'éteint. J'ai donc ajouté un petit script qui lance l'activation de verr num au moment du déroulement de la liste : malheureusement, si le témoin verr num ne s'était pas éteint, c'est l'effet inverse qui se produit. Comme l'utilisateur doit saisir des quantités juste après avoir choisi un article dans le déroulant, cela donne souvent des données incohérentes (le curseur change de ctrl ou d epage écran) ou des messages d'erreur car le curseur ne se trouve plus sur le ctrl quantité et que c'est une valeur de saisie obligatoire.
J'ai essayé l'application (qui est faite pour tourner en runtime) sur XP, sur 2000 et sur 98. J'observe le même phénomène y compris sur mon poste où est installé Access 97.
Le code que je rajoute à l'ouverture de la liste déroulante, c'est : Function Ouvreliste() On Error GoTo Ouvreliste_Err
SendKeys "%{DOWN}" numk numk Ouvreliste_Exit: Exit Function
'déclaration de type pour la version de l'os Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type
'déclaration des API Private Declare Function GetVersionEx Lib "kernel32" Alias _ "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" _ (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" _ (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" _ (lppbKeyState As Byte) As Long
'déclaration des variables Dim o As OSVERSIONINFO Dim numlockstate As Boolean Dim scrolllockstate As Boolean Dim capslockstate As Boolean
' verrouillage de la touche numlock Function numk()
o.dwOSVersionInfoSize = Len(o) GetVersionEx o Dim keys(0 To 255) As Byte GetKeyboardState keys(0)
numlockstate = keys(VK_NUMLOCK) If numlockstate <> True Then 'cas de win95 ou win98 If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then keys(VK_NUMLOCK) = 1 SetKeyboardState keys(0) ''cas de win NT 'dans le cas de NT, enlever les ' ci-après 'ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then ' 'simulation de la pression de la touche ' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 ' 'simulation de la touche relâchée ' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End If
End Function
' verrouillage de la touche capslock Function capsk()
o.dwOSVersionInfoSize = Len(o) GetVersionEx o Dim keys(0 To 255) As Byte GetKeyboardState keys(0)
capslockstate = keys(VK_CAPITAL) If capslockstate <> True Then 'cas de win95 ou win98 If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then keys(VK_CAPITAL) = 1 SetKeyboardState keys(0) 'cas de win NT ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then 'simulation de la pression de la touche keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 'simulation de la touche relâchée keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End If
End Function
' verrouillage de la touche scrollock Function scrollk()
o.dwOSVersionInfoSize = Len(o) GetVersionEx o Dim keys(0 To 255) As Byte GetKeyboardState keys(0)
scrolllockstate = keys(VK_SCROLL) If scrolllockstate <> True Then 'cas de win95 ou win98 If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then keys(VK_SCROLL) = 1 SetKeyboardState keys(0) 'cas de win NT ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then 'simulation de la pression de la touche keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 'simulation de la touche relâchée keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End If
End Function
-- Cordialement, Ze Titi
Tout pour réussir avec Access : http://www.mpfa.info
Salut Gundt !
Le problème viendrai du SendKeys que ça ne m'étonnerait qu'à moitié...
Utilise plutôt:
taListe.DropDown
pour lancer l'ouverture de la liste...
En ce jour exceptionnel du jeudi 08/03/2007, tu nous as très
généreusement gratifié du message suivant:
bonjour à tous,
J'ai un souci avec un phénomène étrange et qui devient vite agaçant car il
engendre des saisies de données erronées.
Dans l'application que j'ai créée sous Access 97, à chaque fois que
l'utilisateur choisit une valeur dans une une liste déroulante qui s'ouvre
automatiquement, 3 fois sur 4 environ, le témoin verr num s'éteint.
J'ai donc ajouté un petit script qui lance l'activation de verr num au moment
du déroulement de la liste : malheureusement, si le témoin verr num ne
s'était pas éteint, c'est l'effet inverse qui se produit.
Comme l'utilisateur doit saisir des quantités juste après avoir choisi un
article dans le déroulant, cela donne souvent des données incohérentes (le
curseur change de ctrl ou d epage écran) ou des messages d'erreur car le
curseur ne se trouve plus sur le ctrl quantité et que c'est une valeur de
saisie obligatoire.
J'ai essayé l'application (qui est faite pour tourner en runtime) sur XP, sur
2000 et sur 98. J'observe le même phénomène y compris sur mon poste où est
installé Access 97.
Le code que je rajoute à l'ouverture de la liste déroulante, c'est :
Function Ouvreliste()
On Error GoTo Ouvreliste_Err
SendKeys "%{DOWN}"
numk
numk
Ouvreliste_Exit:
Exit Function
'déclaration de type pour la version de l'os
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
'déclaration des API
Private Declare Function GetVersionEx Lib "kernel32" Alias _
"GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long
'déclaration des variables
Dim o As OSVERSIONINFO
Dim numlockstate As Boolean
Dim scrolllockstate As Boolean
Dim capslockstate As Boolean
' verrouillage de la touche numlock
Function numk()
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
numlockstate = keys(VK_NUMLOCK)
If numlockstate <> True Then
'cas de win95 ou win98
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(VK_NUMLOCK) = 1
SetKeyboardState keys(0)
''cas de win NT
'dans le cas de NT, enlever les ' ci-après
'ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then
' 'simulation de la pression de la touche
' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
' 'simulation de la touche relâchée
' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or
KEYEVENTF_KEYUP, 0
End If
End If
End Function
' verrouillage de la touche capslock
Function capsk()
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
capslockstate = keys(VK_CAPITAL)
If capslockstate <> True Then
'cas de win95 ou win98
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(VK_CAPITAL) = 1
SetKeyboardState keys(0)
'cas de win NT
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then
'simulation de la pression de la touche
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'simulation de la touche relâchée
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or
KEYEVENTF_KEYUP, 0
End If
End If
End Function
' verrouillage de la touche scrollock
Function scrollk()
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
scrolllockstate = keys(VK_SCROLL)
If scrolllockstate <> True Then
'cas de win95 ou win98
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(VK_SCROLL) = 1
SetKeyboardState keys(0)
'cas de win NT
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then
'simulation de la pression de la touche
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'simulation de la touche relâchée
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or
KEYEVENTF_KEYUP, 0
End If
End If
End Function
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Le problème viendrai du SendKeys que ça ne m'étonnerait qu'à moitié...
Utilise plutôt:
taListe.DropDown pour lancer l'ouverture de la liste...
En ce jour exceptionnel du jeudi 08/03/2007, tu nous as très généreusement gratifié du message suivant:
bonjour à tous,
J'ai un souci avec un phénomène étrange et qui devient vite agaçant car il engendre des saisies de données erronées. Dans l'application que j'ai créée sous Access 97, à chaque fois que l'utilisateur choisit une valeur dans une une liste déroulante qui s'ouvre automatiquement, 3 fois sur 4 environ, le témoin verr num s'éteint. J'ai donc ajouté un petit script qui lance l'activation de verr num au moment du déroulement de la liste : malheureusement, si le témoin verr num ne s'était pas éteint, c'est l'effet inverse qui se produit. Comme l'utilisateur doit saisir des quantités juste après avoir choisi un article dans le déroulant, cela donne souvent des données incohérentes (le curseur change de ctrl ou d epage écran) ou des messages d'erreur car le curseur ne se trouve plus sur le ctrl quantité et que c'est une valeur de saisie obligatoire.
J'ai essayé l'application (qui est faite pour tourner en runtime) sur XP, sur 2000 et sur 98. J'observe le même phénomène y compris sur mon poste où est installé Access 97.
Le code que je rajoute à l'ouverture de la liste déroulante, c'est : Function Ouvreliste() On Error GoTo Ouvreliste_Err
SendKeys "%{DOWN}" numk numk Ouvreliste_Exit: Exit Function
'déclaration de type pour la version de l'os Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type
'déclaration des API Private Declare Function GetVersionEx Lib "kernel32" Alias _ "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" _ (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" _ (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" _ (lppbKeyState As Byte) As Long
'déclaration des variables Dim o As OSVERSIONINFO Dim numlockstate As Boolean Dim scrolllockstate As Boolean Dim capslockstate As Boolean
' verrouillage de la touche numlock Function numk()
o.dwOSVersionInfoSize = Len(o) GetVersionEx o Dim keys(0 To 255) As Byte GetKeyboardState keys(0)
numlockstate = keys(VK_NUMLOCK) If numlockstate <> True Then 'cas de win95 ou win98 If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then keys(VK_NUMLOCK) = 1 SetKeyboardState keys(0) ''cas de win NT 'dans le cas de NT, enlever les ' ci-après 'ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then ' 'simulation de la pression de la touche ' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 ' 'simulation de la touche relâchée ' keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End If
End Function
' verrouillage de la touche capslock Function capsk()
o.dwOSVersionInfoSize = Len(o) GetVersionEx o Dim keys(0 To 255) As Byte GetKeyboardState keys(0)
capslockstate = keys(VK_CAPITAL) If capslockstate <> True Then 'cas de win95 ou win98 If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then keys(VK_CAPITAL) = 1 SetKeyboardState keys(0) 'cas de win NT ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then 'simulation de la pression de la touche keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 'simulation de la touche relâchée keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End If
End Function
' verrouillage de la touche scrollock Function scrollk()
o.dwOSVersionInfoSize = Len(o) GetVersionEx o Dim keys(0 To 255) As Byte GetKeyboardState keys(0)
scrolllockstate = keys(VK_SCROLL) If scrolllockstate <> True Then 'cas de win95 ou win98 If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then keys(VK_SCROLL) = 1 SetKeyboardState keys(0) 'cas de win NT ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then 'simulation de la pression de la touche keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 'simulation de la touche relâchée keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End If
End Function
-- Cordialement, Ze Titi
Tout pour réussir avec Access : http://www.mpfa.info
Gundt
Re bonjour,
Salut Gundt !
Le problème viendrai du SendKeys que ça ne m'étonnerait qu'à moitié...
Utilise plutôt:
taListe.DropDown pour lancer l'ouverture de la liste...
Effectivement, cela a l'air d'aller mieux : j'ai fait 4 à 5 essais et à chaque fois, le témoin verr num est resté allumé.
Je vais modifier mes formulaires en ce sens.
Merci bien à ze Titi.
Gundt
Re bonjour,
Salut Gundt !
Le problème viendrai du SendKeys que ça ne m'étonnerait qu'à moitié...
Utilise plutôt:
taListe.DropDown
pour lancer l'ouverture de la liste...
Effectivement, cela a l'air d'aller mieux : j'ai fait 4 à 5 essais et à
chaque fois, le témoin verr num est resté allumé.