Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2011, 09h38   #1
Nouveau Membre du Club
 
Homme François
Développeur informatique
Inscription : janvier 2010
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme François
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : janvier 2010
Messages : 65
Points : 38
Points : 38
Par défaut W7 32 bits et pavé numérique

Bonjour,

Je gère une application fonctionnant sous MS Access 2010 runtime et Windows 7. Régulièrement, sur les postes W7 32 bits, lors de l'ouverture ou de la fermeture de formulaires le verrouillage du clavier numérique s'inverse. Il suffit bien sur de le repositionner manuellement pour en retrouver les fonctions mais c'est source d'erreurs et particulièrement énervant pour les utilisateurs.

Cela se produit sur les ordinateurs avec W7 32 bits uniquement, (la même application fonctionne aussi sur des postes XP et W7 64). Je n'ai pas le moyen d'essayer avec une version antérieure d'Access mais j'observe la même chose lorsque j'utilise Access (complet) sur mon poste W7/32.

Quelqu'un sait-il si Microsoft connait ce problème et si une correction ou un contournement sont proposés ?

Merci.
Depite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 15h41   #2
Membre Expert
 
Avatar de stigma
 
Homme Alain
Développeur informatique
Inscription : octobre 2003
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 61
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2003
Messages : 846
Points : 1 053
Points : 1 053
Envoyer un message via MSN à stigma
J'utilise ça parce que j'ai eu des soucis à ce sujet :

Déclaré au démarrage de l'appli :
Code :
1
2
3
Public Declare Sub keybd Lib "user32" Alias "keybd_event" _
  (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long)
Forcer NumLock :
Code :
1
2
    '---------  Forcer NumLock si nécessaire
    If (&H1 And GetKeyState(vbKeyNumlock)) = 0 Then appui_touche (144) '------ NumLock
La fonction qui va bien :
Code :
1
2
3
4
5
6
Public Sub appui_touche(T As Long)
        'appuie sur la touche
        keybd T, 0, 0, 0
        'relache la touche
        keybd T, 0, 2, 0
End Sub
__________________
Je ne suis pas une adresse IP, je suis un homme libre !
stigma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h52   #3
Nouveau Membre du Club
 
Homme François
Développeur informatique
Inscription : janvier 2010
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme François
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : janvier 2010
Messages : 65
Points : 38
Points : 38
Par défaut VARIANTE

Merci Stigma pour le tuyaut,

Je l'ai essayé mais sans succès (plantage Access 20010 de la fonction GetKeystate !)

Toutefois ça m'a mis sur une piste recevable que j'ai développée de la manière suivante :

Dans un module indépendant : déclaration des fonctions API et constantes associées :
Code :
1
2
3
4
5
6
7
8
9
10
Private Const VK_NUMLOCK As Long = &H90
Private Const KEYEVENTF_EXTENDEDKEY As Long = &H1
Private Const KEYEVENTF_KEYUP As Long = &H2
 
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.dll" (pbKeyState As Byte) As Long
Création d'une procédure prenant en charge le basculement d'état de la touche si l'état courant n'est pas conforme à ce qui est demandé (paramètre "activation") :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Public Function EtatTouche(Optional ByVal Activation As Boolean = True, Optional ByVal Touche As Long = VK_NUMLOCK)
'======================================================================
' Description
'--------------------------
'  Active (par défaut) ou désactive (si précisé) le verrouillage de la touche 'Touche'
'
'======================================================================
Dim bytKeys(255) As Byte
Dim bnumLockOn As Boolean
Static VersionSystème As Integer
 
'======================================================================
'  Récupération de la situation actuelle des touches
GetKeyboardState bytKeys(0)
 
If VersionSystème = 0 Then
   '  Identifie la version courante du système
   VersionSystème = MonOsVersion()
End If
 
If VersionSystème >= 5 Then '  a partir d'XP uniquement
   '  C'est en comparant à 1 qu'on obtient le bon résultat et non à &H80
   bnumLockOn = ((bytKeys(Touche) And &H1) = &H1)   '  Vrai si NumLock actif
 
   If bnumLockOn <> Activation Then 'if current state <> requested state
         'Simule l'appui sur la touche
         keybd_event Touche, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
         'Simule le relâchement de la touche
         keybd_event Touche, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
         DoEvents
   End If
End If
 
EtatTouche = true
end Function
Le test de la fonction EtatTouche() à partir de la fenêtre d'exécution est satisfaisant.

J'ai appelé ensuite la fonction EtatTouche() à chaque ouverture et à chaque fermeture de fenêtre pas drôle quand on a déjà plus de 100 formulaires dans le projet mais ça n'a pas résolu mon problème

J'ai renforcé en appelant la fonction lors de l'événement Activate du formulaire : toujours sans effet !

J'insiste encore en rappelant que le phénomène est reproductible et se présente uniquement sur Windows 7 32 bits (Access 2010 rutime ou complet).
Depite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 16h29   #4
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 223
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 223
Points : 9 937
Points : 9 937
Envoyer un message via Skype™ à Domi2
Citation:
Envoyé par Depite Voir le message
Quelqu'un sait-il si Microsoft connait ce problème et si une correction ou un contournement sont proposés ?
J'ai bien lu quelque chose de similaire il y a quelque temps, mais il n'était pas précisé s'il s'agissait d'une version 32 ou 64 bits et pas de solutions, mais le posteur avait semble-t-il trouvé la cause.

L'emploi d'un SenKeys en VBA. Est-ce ton cas ?

Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 18h39   #5
Nouveau Membre du Club
 
Homme François
Développeur informatique
Inscription : janvier 2010
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme François
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : janvier 2010
Messages : 65
Points : 38
Points : 38
Par défaut Pas de sendkeys

Bonjour Domi2,

Non, il n'y pas d'utilisation de SendKeys dans l'application.

Ma plateforme de développement est sous XP et je n'y ai pas le problème.
J'ai constaté la même anomalie avec le projet .ADP qu'avec le projet .ADE - ça me semble normal.

La semaine prochaine je vais pouvoir débugger l'affaire sur un poste Win 7 32bit doté d'access 2010. J'espère en tirer un nouvel éclairage.

J'ai 2 utilisateurs sur des plateformes Win7-32 et ils comencent à se tirer des plombs sans compter que ce problème engendre des erreurs de saisie (quantités et prix) qui ont des conséquences commerciales et financières !
Depite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 19h18   #6
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 223
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 223
Points : 9 937
Points : 9 937
Envoyer un message via Skype™ à Domi2
Bonsoir,

Pas vraiment d'idée, mais je réfléchis un peu à haute voix.

Quand cela se produit, au niveau de la base de registre, il y a des modifications (je n'ai pas la ou les clés en tête) ?
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 19h28   #7
Nouveau Membre du Club
 
Homme François
Développeur informatique
Inscription : janvier 2010
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme François
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : janvier 2010
Messages : 65
Points : 38
Points : 38
Par défaut Précision

ATTENTION :
Le phénomène consiste en une inversion de la situation des touches NumLock et CapsLock. le témoin lumineux des touches s'inverse systématiquement sur certaines fenêtres - toujours les mêmes et toujours suite aux mêmes actions mais, comme je l'ai dit tout à l'heure je devrais attendre la semaine prochaine pour investiguer plus à fond.
Depite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 14h49   #8
Nouveau Membre du Club
 
Homme François
Développeur informatique
Inscription : janvier 2010
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme François
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : janvier 2010
Messages : 65
Points : 38
Points : 38
Par défaut Renvoi vers une autre discussion

Bonjour,

J'avais oublié que j'avais ouvert une discussion sur ce sujet il y a quelques temps et en voulant compléter celle-ci, c'est la première que j'ai renseignée.

Voici le lien vers cette discussion, j'y apporte le résultat de mes dernières observations avec un exemple premettant de reproduire le phénomène :
http://www.developpez.net/forums/d1133845/logiciels/microsoft-office/access/vba-access/deverrouillage-pave-numerique/#post6386354
Depite est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h47.


 
 
 
 
Partenaires

Hébergement Web