Bonjour,
J'ai appris le VBA sur le tas, et je galère un brin sur l'utilisation de la fonction SendKeys... Le problème est simple : Quoi que je fasse, les fonctions SendKeys n'entre en application dans mon fichier Excel que lorsque la Macro est finie. Pour faciliter mes essais avec quelque chose de visuel j'ai pris un exemple basique trouvé sur un forum :
J'ai changé la valeur du Wait, mis des tempos, remplacé par des Application.SendKeys... Rien à faire. Systématiquement, ce code arrive en case D3, puis remplit les cases D3 à D5 de "A".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub Test() For I = 1 To 3 Cells(I, 4).Select SendKeys "{F2}", True SendKeys "A", True SendKeys "{ENTER}", True Next I End Sub
Mon soucis final vient du fait que je veut entrer puis sortir de chacune des cases du plage, et j'ai trouvé l'info sur le net que cette action n'est réalisable en VBA que via SendKeys{"F2"}. Recalculer ma feuille ne fonctionnera pas dans mon cas, puisque j'aimerais permettre sur une grande plage d'activer le Renvoi automatique à la ligne uniquement quand un alt+enter a été tapé, pas quand la chaine de caractère est trop longue pour être affichée.
Mon programme initial fonctionne pour ça d'ailleurs, il est même ultra basique, mais vu que les SendKeys s'effectue après la fin du programme, le ScreenUpdating est réactivé, et les grandes plages prennent une éternité à tourner... Rendant la fonction inutilisable. Pour info :
Je n'ai trouvé de solutions ni sur les forums ni sur les site dédiés au VBA. Est-ce que quelqu'un aurait une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim Cible As Range Sub In_N_Out() Application.ScreenUpdating = False For Each Cible In Selection SendKeys "{F2}" SendKeys "{Enter}" Next Cible Application.ScreenUpdating = True End Sub
Merci par avance!
Partager