[Catégorie modifiée .Net --> VBA] VBA - Sendkeys inopérant au sein d'Excel

Signaler
Messages postés
4
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
13 décembre 2015
-
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
-
Bonjour

Je souhaite utiliser la fonction SendKeys sous Excel
et les touches envoyées ... ne sont pas envoyées.
Il ne se passe rien.

Illustration sur un exemple basique :

Soit une feuille vierge
et la macro suivante :
Sub Descente()
Range("A1").Select
SendKeys "{DOWN}", True
DoEvents
End Sub
Mettons le curseur sur n'importe quelle cellule autre que A1
Range va mettre le curseur en A1
Du SendKeys, j'attends que le curseur descende d'une cellule ...
Manque de chance, rien ne bouge !
Le DoEvents, c'est pour laisser le temps au système !

Pourquoi ?

Par contre, activer une autre appli style Notepad, et envoyer des touches sur cette autre appli, pas de souci.
Bref, faire compliqué, ca marche
Faire simple, en local, au sein de la meme feuille Excel, marche pas !

Qq'un a t'il une réponse ?
Ce qui me dépannerai grandement dans mes développements de macro sous Excel 2003.

D'avance, merci
SendKeys "MERCI ;-)", True

4 réponses

Messages postés
14675
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
143
Bonjour,

Pourquoi ne pas faire simplement :
Range("A1").offset(1,0).select
?

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonjour,

Déjà, je souscris à 100% à la remarque de NHenry. C'est comme cela qu'il faut programmer et pas avec SendKeys.

Enfin, on peut tout de même indiquer que le code suivant à mettre dans un module :
Sub Descente()
Sheets("feuil1").Activate
Application.SendKeys "{DOWN}"
End Sub

fonctionne parfaitement...

Alors, pourquoi cela ne fonctionne pas avec ton code? La raison en est simple : Sendkeys simule l'appui d'une touche à partir de l'application active... C'est là le grand problème... Si SendKey ne fonctionne pas avec ton code, c'est tout simplement qu'au moment ou cette instruction s'exécute, tu n'as pas la feuille Excel active...

Amicalement,
Us.
Messages postés
4
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
13 décembre 2015

Merci pour la rapidité et la pertinence des réponses .
C'est nickel et ça marche.

C'est pour l'exemple que je cherchais à descendre d'une cellule.
Ce que je cherchais à faire en réalité, c'est à sélectionner toutes les données affichées aprés l'activation d'un filtre
et pour ça, c'est du :
Origine
Maj + Ctrl + fleche bas
Maj + fleche droite
car Ctrl-A ou Select All, c'est 65000 lignes assurées !
J'avais bien pensé à l'activation d'Excel, mais j'ai dû mal m'y prendre !

Encore un grand merci, je peux reprendre mes developpements.

Cordialement
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Il existe des solutions classiques pour connaitre la zone utilisé... Regardes "UsedRange", par exemple...

Bon développement,

Amicalement,
Us.