Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 22/07/2011, 14h05   #1
Invité régulier
 
Homme Gérard Wolf
Ingénieur développement logiciels
Inscription : décembre 2006
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme Gérard Wolf
Âge : 63
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : décembre 2006
Messages : 23
Points : 6
Points : 6
Par défaut Sendkeys fonctionne pas correctement

Boujour à tous,

J'ai des problèmes avec l'utilisation de SendKeys :
1. l'action souhaitée ne s'effectue parfois pas
2. la fonction "Num Lock" du pavé numérique du clavier se désactive parfois

Avec Access 2 sous Windows XP, il n'y avait pas de problème.
J'utilise actuellement Access 2003 sous Windows Vista ou 7 et le problème se pose.

J'utilise SendKeys notamment avec "{ESC}", "^{PGDN}" et "{F2}"

Je ne sais pas s'il y a une solution générale.

Voici en tout cas le détail d'un cas d'utilisation qui me préoccupe :
Dans un sous-formulaire, il y a un traitement "multilingue" dont je passe le détail. Quand on entre sur le contrôle LibellB3, on doit passer à l'enregistrement suivant (nouveau éventuellement) et sauter sur le contrôle NumTva.

Code :
1
2
3
4
 
Sub LibellB3_Enter()
DoCmd.GoToControl "NumTva"
SendKeys "^{PGDN}" 'Enregis
Le saut sur NumTva se fait bien mais le saut à l'enregistrement suivant ne se fait parfois pas.

Comment aller à l'enregistrement suivant sans utiliser SendKeys ?

Merci d'avance pour votre aide

Gérard
gerard101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 14h25   #2
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

La fonction Sendkeys n'est en effet pas opportune dans votre cas et doit s'utiliser en dernier recours surtout pour piloter d'autres applications.

Passage à l'enregistrement suivant :

Code :
    DoCmd.GoToRecord , , acNext
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 19h55   #3
Invité régulier
 
Homme Gérard Wolf
Ingénieur développement logiciels
Inscription : décembre 2006
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme Gérard Wolf
Âge : 63
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : décembre 2006
Messages : 23
Points : 6
Points : 6
Merci pour votre réponse.

Toutefois avec
Code :
DoCmd.GotoRecord , , acNext
il apparaît l'erreur :
2105 : impossible d'atteindre l'enregistrement spécifié, même s'il existe un enregistrement suivant. Je ne vois pas pourquoi.

Avec
Code :
DoCmd.GotoRecord , , acNext, 1
: même erreur

Avec
Code :
DoCmd.GotoRecord , , acNewRec
: ça marche, mais on va à un nouvel enregistrement même s'il existe un enregistrement suivant !

Je souhaite :
- aller à l'enregistrement suivant
- s'il n'y en a pas, aller à un nouvel enregistrement

Merci de votre aide,

Gérard
gerard101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 20h20   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,
Un acnext provoque une erreur s'il n'y a pas d'enregistrement suivant.
Il ne se positionnera jamais sur un newrecord.

Tu peux gérer l'erreur ou la prévenir en faisant quelques tests.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 20h49   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Je ne vois pas de lien direct mais essaye de sauvegarder ton enr avant d'envoyer la commande saut d'enr.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 09h09   #6
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Il est possible aussi que votre bouton de commande pour passer à l'enregistrement suivant soit dans votre formulaire principal, qui s'il ne possède pas d'enregistrement suivant génère l'erreur évoqué ...

Si c'est le cas, renseignez les paramètres de Gotorecord pour indiquer le nom de votre sous-formulaire concerné.

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 10h30   #7
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

Vous n'auriez pas tripoté la propriété Entrée données du formulaire ?
La valeur serait à Oui par exemple.


Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 18h02   #8
Invité régulier
 
Homme Gérard Wolf
Ingénieur développement logiciels
Inscription : décembre 2006
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme Gérard Wolf
Âge : 63
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : décembre 2006
Messages : 23
Points : 6
Points : 6
Par défaut Merci !

Merci à tous pour votre aide.

En fait le problème était le suivant (serpent qui se mort la queue) :
- en entrant sur un contrôle on exécute une sub contenant GotoRecord acNext
- on arrive bien sur l'enregistrement suivant, sur le même contrôle
- du coup, on ré-exécute la même sub
- et ce jusqu'à arriver au dernier enregistrement
- à ce moment l'erreur apparaît : 2105 : impossible d'atteindre l'enregistrement spécifié

Solution :
1. faire GotoControl (vers un autre contrôle) avant GotoRecord acNext
2. pour le cas où on est déjà au dernier enregistrement, capter l'erreur (on error...) et faire GotoRecord acNewRec

Encore merci pour votre aide,

Gérard
gerard101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h16.


 
 
 
 
Partenaires

Hébergement Web