IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur sur Sendkey "permission refusée" [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut Erreur sur Sendkey "permission refusée"
    Bonjour a tous

    Suite a une réinstallation de PC de mon excell 2002 sous w8, je me retrouve avec une erreur a l'exécution de mon code vba suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     SendKeys "%f", True
    Avec une "erreur d'exécution 70 Permission refusé".

    Quelqu'un aurait il une idée sur le sujet, à par mettre un autre OS que W8?

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Pour précision, à quoi te sert d'envoyer un Alt-F ?

  3. #3
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Bonjour parmi


    J'envoie un Alt F parce que je lance un logiciel depuis excell par le biais de vba et je pilote ensuite le logiciel en utilisant Sendkeys pour ouvrir le menu fichier et autre.

    Comme dans le code ci dessous:

    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
    16
    17
     
     ChDrive "C"
        ChDir "C:\Program Files (x86)\logiciel"
        Shell """C:\Program Files (x86)\logiciel\logiciel.exe"""
        Application.Wait (Now + TimeValue("0:00:01"))
         SendKeys "%f", True
        SendKeys "i", True
        Sleep 10
        SendKeys " ", True
        SendKeys "{tab 3}", True
        SendKeys "~", True
        Sleep 10
        SendKeys NomFichier, True
        SendKeys "~", True
        Sleep 10
        SendKeys "{tab 3}", True
        SendKeys "~", True

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Et en pas à pas, ça fonctionne ou pas?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Bonjour AlainTech


    Non en pas a pas cela ne fonctionne pas non plus et ça bloque juste a la ligne du Alt + F

    Avec le message d'erreur cité au dessus.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 73
    Par défaut
    Salut à vous !

    Essai :


  7. #7
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Bonjour lowno

    je viens de tester, mais cela ne change rien j'ai toujours cette erreur de permission refusé.

    le pire c'est que si je le fais manuellement au clavier cela fonctionne sans soucis mais par le code VBA ça bug.

    Sous XP et window7 j'ai jamais eu ce soucis.


    Avez vous déjà rencontré ce type d'erreur sous d'autre OS et Est ce que quelqu'un pourrait tester sous Windows 8 si il a le même message?

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Une possibilité est d'utiliser les APIs pour "by-passer" Sendkeys.
    Voir le lien ici

    Une autre possibilité, plus simple, est de désactiver le UAC (user account control). Voir le lien ici pour Win 7. Je ne sais pas si cette possibilité existe sous Win 8, par contre (?)

    Tu pourrais aussi essayer de rouler ton programme en mode Administrateur.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 73
    Par défaut
    Re,

    Cela viens aussi peut-être du fais qu'il faille "identifier" où doit allez le "sendkeys".

    Voici un code avec des sendkeys que j'utilise et qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For n = 1 To nb
    f = 1: ok = 1
     
    fenetre = "Client - Windows Internet Explorer"
    AppActivate fenetre
    If ok = 1 Then Exit For
    Next n
    End If
     
    trouvé:
     
    If f = 1 Then fenetre = "Client - Windows Internet Explorer"
    SendKeys "%fr", 1
    J'active mon programme puis j'envoie le sendkeys.

    Si cela peu t'aider....

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Trouvé sur le forum Microsoft anglophone:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'You have to have ms scripting runtime referenced
    Dim WshShell As Object
     
    Set WshShell = CreateObject("WScript.Shell")
     
    WshShell.SendKeys "{Tab}"
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  11. #11
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Merci a vous trois

    Et en particulier a AlainTech qui a trouvé pour moi la solution la plus simple.

    J'allais me pencher sur les API comme conseillé par Parmi, car ce qui était gestion utilisateur et administrateur j'avais déjà fait les test non concluant, mais je n'étais pas sur d'y arriver vu mon niveau qui reste modeste.

    J'ai donc refait mon code et la ça passe nickel, par contre l'astuce est donc de passer par un objet "Wscript" qui est mieux reconnu par Windows que le "Sendkeys" en VBA.

    C'est bien cela ou je me trompe?

    En tout cas encore un grand merci.

    Je reviendrai certainement avec d'autre post, car j'ai encore d'autre bug dû au changement de version de Windows.

  12. #12
    Invité
    Invité(e)
    Par défaut bonjour,
    j'ai crue comprendre que tu utilisais IE; pourquoi ne pas le piloté?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Const OLECMDID_SELECTALL = 17
    Const OLECMDEXECOPT_DODEFAULT = 0
    Const OLECMDID_COPY = 12
    IE.ExecWB TouchClavier, OLECMDEXECOPT_DODEFAULT
    il faut juste connaitre les codes des touche sur ce forum tu devrais trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOACTIVATE = &H10
    Private Const SWP_SHOWWINDOW = &H40
    Private Const HWND_TOPMOST = -1
    Private Const HWND_NOTOPMOST = -2
    Private Const Flags = SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
     
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    keybd_event(&H2C, 1, 0, 0) 'imprime écran
    Dernière modification par Invité ; 15/01/2014 à 11h22.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 73
    Par défaut
    Je profite du post :

    AlainTech, l'utilisation de wscript est elle mieux adapté ??

    Notamment pour mon poste qui concerne des sendkeys et où je rencontre des problèmes de lenteur et de gestion des envoies parfois un peu trop "aléatoire" des sendkeys :

    http://www.developpez.net/forums/d14...ction-cellule/

    Parmi, ton lien n'est valable que pour vista ? Désolé, j'ai cherché mais je ne trouve pas : qu'entend tu par by-passer les sendkeys ?


    Merci à vous !

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Si j'ai bien compris dans les recherches que j'ai faites, SendKeys bogue si on utilise des versions plus anciennes d'Excel (2003 et avant) avec Windows Vista, 7 et 8

    Un des liens parle justement d'outrepasser le SendKeys fautif par les API. Par contre, je ne connaissais pas la méthode avec WScript. Si ça fonctionne vraiment, ce sera peut-être plus simple (?)

  15. #15
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Non rdurupt, je n'utilise pas IE.

    C'est un logiciel de métier industriel que j'utilise, mais je ne connaissais pas la possibilité de piloté IE comme cela

    Ca peut fonctionner pour d'autre logiciel que IE?

    Par contre Parmi oui je suis persuadé que c'est plus simple que les API surtout pour moi qui suis relativement novice et pas de soucis ça fonctionne.

    Sinon lowno la méthode avec Wscript fonctionne au niveau vitesse exactement comme avec les Sendkeys, car mon pc étant plus rapide que le précèdent j'ai été obligé de modifier mes pauses pour que tous ce coordonne correctement, donc ça reste un peu aléatoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Erreur sur un Kill : Permission refusée
    Par Taiby dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/06/2012, 15h05
  2. [Toutes versions] Erreur d'exécution '70' - permission refusée
    Par EvilSakray dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/09/2011, 01h05
  3. erreur d'execution '70': permission refusée
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2009, 13h14
  4. Réponses: 1
    Dernier message: 11/05/2007, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo