Combinaison de touches avec SendKeys en VBA

Anonyme
2023-02-26T10:20:44+00:00

Bonjour à tous,

Mon problème étant de réaliser en VBA un caractère spécial exemple : « È » avec ALT+0200.

J’aimerais également saisir U+01C2 pour obtenir "ǂ" OU ALT+0450 puisque 01C2 en exa fait 450 en décimal.

J’ai récupéré l’aide fournie par Microsoft, là voici :

Clé Code
MAJ +
Ctrl ^
Alt %
Pour indiquer qu'il faut maintenir enfoncées les touches Maj, Ctrl ou Alt, ou toute combinaison, pendant qu'on appuie sur plusieurs autres touches, insérez le code de ces touches entre parenthèses. Par exemple, pour spécifier de maintenir la touche Maj enfoncée lorsque les touches E et C sont enfoncées, utilisez +(EC).<br><br> <br><br>En théorie je dois écrire SendKeys"%(0200)" OU SendKeys"%({NUMLOCK}0200)" OU SendKeys"%{NUMLOCK}(0200)"

Voici le code que j’ai essayé dans EXCEL 2019 :

Sub Touches()

Sheets("SendKeys").Select

Range("E50").Select

SendKeys "{F2}"

SendKeys "%({NUMLOCK}0201)"

End Sub

Cela me donne 201 saisis dans la cellule.

Bien évidemment j’ai essayé toutes les autres possibilités, mais aucun code ne fonctionne.

Aussi bien dans EXCEL que dans Word.

Auriez-vous la solution ?

Microsoft 365 et Office | Excel | Pour les entreprises | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

10 réponses

  1. Anonyme
    2023-02-26T16:54:48+00:00

    En effet. Pour les premiers codes, on n'obtient pas ces caractères. Je ne sais d'ailleurs pas d'où ils sortent, puisque ça ne correspond pas au début de la table UNICODE... Quelque part, par commodité, ils ont dû remplacer les 32 codes du début de la table (les deux première lignes, de 0 à 31, celles qui ne correspondent pas à des caractères affichables). À partir du 33e, ça correspond... :

    Image

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-02-26T14:21:59+00:00

    Bonjour,Merci, ton code fonctionne, je ne sais toujours pas comment effectuer une combinaison de touches avec SendKeys. Par contre, tu ne l'as pas testé, puisqu'au premier caractère le résultat est différent. Ton code ne donne pas :ALT + 1 = ☺, ALT = 2 = ☻, ALT + 3 = ♥ ALT + 4 = ♦ ALT + 5 = ♣ ChrW(1) = , ChrW(2) = , ChrW(3) = , ChrW(4) = , ChrW(5) = C'est juste complétement différent, non ? Oui, de plus suivant les zéros utilisés, le résultat sera différent.Explique-moi de quoi tu as besoin, je t'expliquerai comment t'en passer. Les explications de Microsoft ne fonctionnent pas en gros, nous sommes bien d'accord sur ce point, des baltringues.Cordialement,Pascal ROI

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2023-02-26T14:04:36+00:00

    Je ne comprends toujours pas bien ce que tu cherches à faire. S'il s'agit de recréer une table UNICODE, tu peux le faire avec une boucle dans ce genre :

    Sub MonCodeAMoi()

    For i = 1 To 10000 ' rien n'empêche d'aller plus loin

        Range("A" & i).Value = i

        Range("B" & i).Value = ChrW(i)

    Next i

    End Sub

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2023-02-26T13:06:48+00:00

    Bonjour,

    Merci, mais je cherche à écrire avec le clavier, pas seulement dans Excel et pas uniquement les 256 caractères ASCCII.

    Je souhaite rédiger une routine pour répertorier la table de caractères complète.

    Exemple : ALT + 1 = ☺

                ALT + 0966 = Æ
    

    De base faire une combinaison de touches ALT et plusieurs chiffres avec SendKeys.

    Les explications Microsoft ne fonctionnent bien évidement jamais puisqu'ils ne testent jamais leurs explications, autrement ils seraient reconnus comme étant des bons. Malheureusement ce sont des mauvais. Le déclin depuis 2006. Ils n'ont plus que du personnel minable.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2023-02-26T12:49:13+00:00

    Pas sûr d'avoir bien saisi ta demande. Toutefois, s'il s'agit de saisir le caractère È dans une cellule, tu peux le faire avec une instruction du genre de :

    Range("A1").Value = ChrW(0200)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire