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 :

decouverte et utilisation sendkeys - CTRL V ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Par défaut decouverte et utilisation sendkeys - CTRL V ne fonctionne pas
    bonjour tout le monde,

    Je souhaite faire un copie coller sur une application sur 2 champs.
    Le passage d'un champ à l'autre se fait avec la touche TAB.

    En cherchant sur internet j'ai pu concevoir ce code à titre d'essai :

    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
    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
    Dim nm As String
    Dim nm1 As String
     
    sub test()
     
    nm = Sheets("Feuil1").Range("d10").Value    'je copie nm dans une variable pour l'essai mais la source pourra être un texte issue d'une variable
    nm1 = Sheets("Feuil1").Range("d11").Value   'je copie nm dans une variable pour l'essai mais la source pourra être un texte issue d'une variable
     
    Clipboard (nm)  'mis dans le presse papier
    Application.OnKey "^v", "test2" 'j'attends que l'utilisateur appui sur touche CTRL + V  qui est le déclencheur, test2 est la macro appelé et ainsi je colle le 2ieme
    'pour les touches de fonction : "{ }" alors que les autres touches " "
     
    End Sub
     
    Sub test2()
     
    Application.SendKeys "{TAB}", True    'je tabule sur le clavier
    Clipboard (nm1)     'je place la 2ieme donnée dans le presse papier
    Application.SendKeys "^v", True       'je réalise CTRL + V pour coller le presse papier
    Application.OnKey "^v", ""  'je réalise l'arrêt de onkey
     
    End Sub
     
    Function Clipboard(Optional StoreText As String) As String
    'Pour copier Clipboard ActiveCell
    'Pour coller MsgBox Clipboard
    Dim x As Variant
        x = StoreText 'Stocker comme variante pour la prise en charge de VBA 64 bits
        'Créer un objet HTMLFile
        With CreateObject("htmlfile")
            With .parentWindow.clipboardData
                Select Case True
                    Case Len(StoreText)
                    'Écrire dans le presse-papiers
                        .setData "text", x
                    Case Else
                    'Lire depuis le presse-papiers (aucune variable transmise)
                    Clipboard = .GetData("text")
                End Select
            End With
        End With
     
    End Function
    la fonction clipboard sert à mettre en copie mes données d'une variable dans le presse papier

    Mon problème est, après plusieurs tests que le copie colle ne fonctionne pas, même sur une feuille excel !

    Qu'est ce qui pose problème dans mon code
    Je pense que le premier colle vient du fait de l'écouteur : Comment on fait pour attendre la fin de l’exécution de colle pour passer la commande onkey ?
    et ensuite pourquoi le 2ieme colle ne s’exécute pas ? je n'ai pas de réponse là !

    Merci pour votre aide,

    cordialement

  2. #2
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Par défaut
    Oui petite précision :

    Les colle avec CTRL + V fonctionne très bien sans l'utilisation de application.sendkeys et application.onkeys.
    Le problème vient de les utiliser ensemble.
    Il doit manquer quelque chose mais quoi ?

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 181
    Par défaut
    Hello,
    le souci c'est que tu utilises la même combinaison de touches pour le OnKey et le SendKeys. Si tu utilises par exemple ^k pour le OnKey cela devrait fonctionner mieux.
    Ami calmant, J.P

  4. #4
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Par défaut
    Bonjour Jurassic Porc,

    Pas d'amélioration avec ta solution :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Sub test()
     
    nm = Sheets("Feuil1").Range("d10").Value    'je cpoie nm dans une variable pour l'essai mais la source pourra être un texte issue d'une variable
    nm1 = Sheets("Feuil1").Range("d11").Value   'je cpoie nm dans une variable pour l'essai mais la source pourra être un texte issue d'une variable
     
    Clipboard (nm)  'mis dans le presse papier
    Application.OnKey "^k", "test2" 'touche CTRL + V est le déclencheur, test2 est la macro appelé
    'pour les touches de fonction : "{ }" alors que les autres touches " "
     
    End Sub
     
    Sub test2()
     
     
    Application.SendKeys "{TAB}", True    'je tabule sur le clavier
    Clipboard (nm1)     'je place la 2ieme donnée dans le presse papier
    Application.SendKeys "^v", True       'je réalise CTRL + V pour coller le presse papier
    Application.OnKey "^k", ""  'je réalise l'arrêt de onkey
     
    End Sub
     
    Function Clipboard(Optional StoreText As String) As String
    'Pour copier Clipboard ActiveCell
    'Pour coller MsgBox Clipboard
    Dim x As Variant
        x = StoreText 'Stocker comme variante pour la prise en charge de VBA 64 bits
        'Créer un objet HTMLFile
        With CreateObject("htmlfile")
            With .parentWindow.clipboardData
                Select Case True
                    Case Len(StoreText)
                    'Écrire dans le presse-papiers
                        .setData "text", x
                    Case Else
                    'Lire depuis le presse-papiers (aucune variable transmise)
                    Clipboard = .GetData("text")
                End Select
            End With
        End With
     
    End Function
    As tu autre chose à me conseiller ?

    Merci,

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 560
    Par défaut
    Bonjour,
    Et pourquoi pas
    Application.SendKeys nm1

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 181
    Par défaut
    Hello,
    Citation Envoyé par chrisaccess Voir le message
    As tu autre chose à me conseiller ?
    Avec ton code chez moi cela fonctionne. Que se passe-t-il chez toi ? Quelle version d'Excel ? Quel O.S ? Un pc plutôt rapide ou plutôt lent ?
    vu ce que tu veux faire la solution de Thumb down me semble pas mal : on écrit nm1 dans la cellule sélectionnée par Tab pas besoin d'utiliser le presse-papier. D'ailleurs plutôt que d'envoyer un tab pourquoi ne pas sélectionner la cellule par ActiveCell.Offset(0,1).Select ? et on peut écrire aussi dans la cellule par Value.
    En fait que veux-tu faire exactement et pourquoi passer par le presse-papier ?


    Ami calmant, J.P

  7. #7
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 012
    Par défaut
    Bonjour,
    J'ai lu quelque part que pour utiliser la fonction :
    Function Clipboard(Optional StoreText As String) As String
    Il faut configurer le navigateur internet pour accepter le copier coller via le presse papiers.
    Le problème peut venir de là. C'est juste une piste...

  8. #8
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 560
    Par défaut
    Bonjour,
    Pourquoi passer par le press papier ?

Discussions similaires

  1. Atteindre une fonction avec CTRL + Clic ne fonctionne pas
    Par DaYonyon dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 18/03/2010, 14h40
  2. CTRL + espace ne fonctionne pas dans Ganymede 3.4.2
    Par sal.gass dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 28/12/2009, 10h17
  3. [SWT] setAccelerator avec Ctrl+Espace ne fonctionne pas
    Par Washmid dans le forum SWT/JFace
    Réponses: 5
    Dernier message: 09/07/2009, 13h36
  4. Réponses: 8
    Dernier message: 11/07/2007, 09h38
  5. Ctrl-c ne fonctionne pas
    Par damdam78 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 21/06/2007, 13h53

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