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

macrofou Messages postés 4 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 13 décembre 2015 - 30 juin 2010 à 18:48
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 30 juin 2010 à 22:55
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

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 juin 2010 à 18:54
Bonjour,

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

0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
30 juin 2010 à 21:17
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.
0
macrofou Messages postés 4 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 13 décembre 2015
30 juin 2010 à 22:38
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
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
30 juin 2010 à 22:55
Il existe des solutions classiques pour connaitre la zone utilisé... Regardes "UsedRange", par exemple...

Bon développement,

Amicalement,
Us.
0
Rejoignez-nous