Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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 16/12/2011, 22h21   #1
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Par défaut Convertir touche clavier en code

Bonsoir,
Je voudrais savoir s'il existe un moyen rapide de convertir chaque touche du clavier en Code.

Par exemple, la touche entrée = &HD
Avec Asc("A") j'arrive à convertir les lettre de A à Z, mais pour les numéros, et les caractères spéciaux, je n'arrive pas à le faire...

Avez vous une idée?

Je ne vais quand même pas faire un truque du genre :

Code :
1
2
3
4
5
6
If touche = "%" Then
...
ElseIf Touche = "ù" Then
...
ElseIf Touche = ")" Then
....
Merci de votre aide.

Cordialement,
Jojo
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 17/12/2011, 08h31   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 756
Points : 1 756
Bonsoir,
Asc fonctionne avec tous les caractères
Asc("%") retourne bien 37
Asc("ù") retourne 249
Asc("2") retourne 50
etc
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 09h24   #3
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Salut,
Je vois bien, mais mon SendInput ne prend pas en compte les caractères speciaux...

Et oui c'est confirmé... SendInput ne prend pas les caractères autre que les numeros, touches de fonctions et alphabetiques...

Comment faire pour envoyer des accents et autres en sendInput?
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 10h35   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Citation:
Envoyé par jojo86 Voir le message
Et oui c'est confirmé... SendInput ne prend pas les caractères autre que les numeros, touches de fonctions et alphabetiques...
Bonjour,

Je dois avoir un problème, impossible de trouver une aide VBA sur la fonction, méthode... SendInput ? API tant pis, quelqu'un a peut-être oublié de préciser quelque chose...

Bon on peut toujours aller voir de ce côté là :

http://www.kbdedit.com/manual/low_level.html

Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 17/12/2011, 12h57   #5
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Oui c'est une API,

Je ne comprend pas le principe de KBEdit, peut être une explication serait-elle la bienvenue?

Merci beaucoup.
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 17/12/2011, 15h12   #6
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
Citation:
Je ne comprend pas le principe de KBEdit
Peut-être ici

Sinon plutôt qu'une structure avec des if partout, tu peux faire un tableau de correspondance, que faut il que SendInput envoie pour avoir un caractère spécial?

Tu as également SendKey. Et la tu peux envoyé des caractères spéciaux en spécifiant Shift, Alt ou Ctrl dnas le code de ta touche.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/12/2011, 00h21   #7
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Merci, mais je suis obligé de passer par le send Input, c'est pour une aplication citrix, et il n'y a que ça qui marche...
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 00h26   #8
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonsoir,

en donnant tous les paramètres dès le départ, ça serait plus pratique pour tout le monde et ferais preuve de respect envers les contributeurs

.
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 18/12/2011, 07h50   #9
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Si je comprend bien le fonctionnement de sendInput, tu dois utiliser une structure tableau de KeyInput.

Dans ce tableau tu dois spécifier l’enchaînement que tu souhaites
Par exemple pour faire un @, la combinaison est AltGr+0

Donc tu dois avoir dans ton tableau de KeyInput
Code :
Dim TabKey(3) as KeyInput
TabKey(0) -> AltGr KeyDown
TabKey(1) -> Touche 0 KeyDown
TabKey(2) -> Touche 0 KeyUp
TabKey(3) -> AltGr KeyUp

Pour faire cela tu dois définir wVk qui représente la touche (AltGr ou 0) et dwFlags qui représente l’état que tu veux simuler pour la touche wVk.

Pour te facilité le travail et pouvoir réaliser un fonction qui fasse tout le boulot en luis transmettant juste une string, tu auras surement besoin de VkKeyScan

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 10h19   #10
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Je n'ai eu aucun probleme pour faire marcher sendInput... Le soucis c'est que sendInput ne Prend pas les touches autres que A-Z, 0-9, Ctrl, alt, tab, shift, return, F1-F12....
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 10h58   #11
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Citation:
t oui c'est confirmé... SendInput ne prend pas les caractères autre que les numeros, touches de fonctions et alphabetiques...

Comment faire pour envoyer des accents et autres en sendInput?


Relit mon message, ou alors reformule le problème qui motive ton post.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 22h23   #12
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Mon problème c'est qu'avec SendInput j'arrive à simuler les touche de A à Z et de 0 à 9 puis les touche F1 à F12.
J'arrive à simuler des majuscules ou minuscules en simulant l'appui sur Shift.
Si maintenant j'envois le code de la touche % en simulant l'appui sur Shift (ou non) et bien je n'ai rien du tout qui sort...

Pareil pour les accents et autres...
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 07h26   #13
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Option Explicit
 
Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_KEYUP = &H2
Const INPUT_MOUSE = 0
Const INPUT_KEYBOARD = 1
Const INPUT_HARDWARE = 2
 
Private Type MOUSEINPUT
dx As Long
dy As Long
mouseData As Long
dwFlags As Long
time As Long
dwExtraInfo As Long
End Type
 
Private Type KEYBDINPUT
wVk As Integer
wScan As Integer
dwFlags As Long
time As Long
dwExtraInfo As Long
End Type
 
Private Type HARDWAREINPUT
uMsg As Long
wParamL As Integer
wParamH As Integer
End Type
 
Private Type GENERALINPUT
dwType As Long
xi(0 To 23) As Byte
End Type
 
Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
 
Private Sub SendKey(ByVal bKey As Byte)
Dim GInput(0 To 1) As GENERALINPUT
Dim KInput As KEYBDINPUT
KInput.wVk = bKey 'the key we're going to press
KInput.dwFlags = 0 'press the key
'copy the structure into the input array's buffer.
GInput(0).dwType = INPUT_KEYBOARD ' keyboard input
CopyMemory GInput(0).xi(0), KInput, Len(KInput)
'do the same as above, but for releasing the key
KInput.wVk = bKey ' the key we're going to realease
KInput.dwFlags = KEYEVENTF_KEYUP ' release the key
GInput(1).dwType = INPUT_KEYBOARD ' keyboard input
CopyMemory GInput(1).xi(0), KInput, Len(KInput)
'send the input now
Call SendInput(2, GInput(0), Len(GInput(0)))
End Sub
 
Sub tetse()
SendKey 55 
 
End Sub
Essai les 255 valeurs les autres caractères doivent être quelque part

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/12/2011, 18h51   #14
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Bon ok... j'ai minimisé ton problème, je viens de faire plus d'essais et ça n'est pas si simple que ça...

Le code ascii transmis ne sont pas interprété comme on pourrait l'attendre.

Par contre, le but étant de prendre la main sur Internet explorer (je suppose que c'est toujours le même thème?). Ton fichier Excel est lancé en local ou en distant? c'est important, car si tu peux faire les 2, il serait peut-être mieux de lancer ton Excel en distant, car ainsi, il se retrouverait sur le même environnement (sur le server distant) et ainsi lors de l'appelle a GetObjet, il devrait trouver ton instance d'IE).
Je suis quand même étonne que tu ai tant de soucis de prise en main, nous avons une appli intranet pour la saisi de nos pointage d'activité et j'arrive à récupérer les données saisi pour faire des suivis de "portefeuilles" horaire (avec code que j'ai fait en VBa sur Excel).
D'ailleurs c'est mon responsable de service qui l'utilise et il a un portable qui a Excel installé en local et il est obligé d'ouvrir sa session IE en local pour que ça fonctionne... sinon en distant ça plante.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2011, 19h05   #15
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
C'est pour envoyer des touches sur SAP, ouvert par Citrix, avec une class Transparent window.
Bref, en somme, je ne peux pas controler ces fenêtres autre que par les touches tabulation et return...

C'est du bricolage, mais impossible de toucher directement à ces fenêtres...

C'est Bien IE qui est ouvert, mais en Distant et sous le nom de processus : wfica32.exe...
jojo86 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 01h58.


 
 
 
 
Partenaires

Hébergement Web