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 :

Pourquoi ce code Application.Onkey ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 85
    Points : 46
    Points
    46
    Par défaut Pourquoi ce code Application.Onkey ne fonctionne pas
    Bonjour à tous,

    Ce code qui me semble simple ne fonctionne pas. Le souhait est de fusionner les cellules sélectionnées à l'appui de Ctrl et w. Suivant les docs trouvées, rien d'à priori compliqué.
    Pour ceux qui me proposeraient d'autres solutions, je précise que ça m'intéresse de savoir pourquoi ce code précis ne marche pas. Quelque soit la pertinence de son utilisation.
    Merci

    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
     
    Sub fu()
     
    Application.OnKey "^{w}", "fusion"
     
    End Sub
     
    Sub fusion()
    '
    ' fusion Macro
    '
     
    '
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 279
    Points
    34 279
    Par défaut
    Salut,

    ne confonds-tu pas avec SendKeys ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 85
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Je ne pense pas. Le but du jeu est d'éviter d'avoir à obligatoirement utiliser les combinaisons de touche Ctrl quelque chose proposées en standard par Excel pour l'exécution d'une macro.
    De ce que j'en ai vu, la solution est l'utilisation de Application.Onkey avec deux paramètres:
    La touche ou la combinaison de touche que tu utilises comme premier paramètre
    La procédure que tu appelles lorsque cette touche ou combinaison de touche est jouée

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 279
    Points
    34 279
    Par défaut
    Pardon, j'etais sur l'envoi de touche, et non la creation d'un raccourci

    alors j'ai fait des essais de mon cote.

    L'attribution du raccourci est bonne et le declenchement du raccourci se lance bien. Aucun soucis non plus dans la fusion, mais peut etre que prendre en consideration l'existence et taille de la selection sont bien.

    As-tu bien un Application.EnableEvents = True par exemple ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    je précise que ça m'intéresse de savoir pourquoi ce code précis ne marche pas
    ne nous dit pas comment ce code "ne marche pas".
    - Aucun effet ?
    - Un message d'erreur ?
    - Autre, et quoi ?
    Nous ne savons par ailleurs pas où (dans quoi) tu a mis chacun de ces deux codes, ni comment et à quel moment tu "lances" la sub fu
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    premièrement, quel est le comportement actuel ? Car le raccourci Ctrl+w sert à la base à fermer le classeur actif

    ensuite, pourquoi ne pas utiliser l'interface Excel ?

    Menu Développeur >> Macro >> sélectionner la macro souhaitée >> cliquer sur Option >> la boite de dialogue de propose d'ajouter un raccourci en Ctrl + ToucheDeTonChoix

  7. #7
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 85
    Points : 46
    Points
    46
    Par défaut
    Bonjour Jean-Philippe,

    J'avais essayé avec un enable;events = true mais ça ne fonctionnait pas bien mieux.

    à unparia, je préfère ne pas répondre, je vais me montrer désagréable, ou plutôt si, ce ne sera pas la première fois que je me fais mal voir sur ce forum. Donc, réponse typique du forumiste français, sous-entendu, j'ai pas de réponses mais je te fais valoir que je trouve ta question con.
    Commentaire de ma part, évidemment fu est censé se lancer sur une combinaison de touche, ce qu'est censé permettre Application.Onkey(). Quand on n'a rien à dire ... D'où ma dilection naturelle pour les forums anglais. Réponse attendue -> ben vas y. Réponse, c'est fait.
    PS - Mon code je l'ai mis ou tu penses, je suis sur que tu penses dans la zone développeur à l'endroit ad hoc.
    Re PS - J'aime pas les forumistes condescendants, je pense que tu auras compris.

    à Joel, jai précisé que c'est justement pour éviter d'avoir à utiliser le Ctrl obligatoire de l'option classique. Sinon je m'en servirais, ce que je fais pour le moment mais j'aimerais trouver d'autres solutions. C'est une question de "rapidité", par exemple un Alt x va plus vite qu'un Ctrl+Shift+q. Le code dont je me servirais utilisera plus volontiers Alt que Ctrl mais jai essayé ce code avec % et + qui sont censés être les raccourcis de Maj et Alt ou l'inverse, ça ne fonctionne pas mieux.
    Je pense que mon erreur doit être triviale mais je ne la vois pas.

    Mon code n'est là qu'à titre d'exemple, je l'ai essayé avec o, p et bien d'autres lettres avant de poster, ça ne fonctionne pas mieux.

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    unparia, je préfère ne pas répondre, je vais me montrer désagréable, ou plutôt si, ce ne sera pas la première fois que je me fais mal voir sur ce forum. Donc, réponse typique du forumiste français, sous-entendu, j'ai pas de réponses mais je te fais valoir que je trouve ta question con.
    Commentaire de ma part, évidemment fu est censé se lancer sur une combinaison de touche, ce qu'est censé permettre Application.Onkey(). Quand on n'a rien à dire ... D'où ma dilection naturelle pour les forums anglais. Réponse attendue -> ben vas y. Réponse, c'est fait.
    PS - Mon code je l'ai mis ou tu penses, je suis sur que tu penses dans la zone développeur à l'endroit ad hoc.
    Re PS - J'aime pas les forumistes condescendants, je pense que tu auras compris.
    Ta réponse est totalement inacceptable.
    Les questions que je t'avais posées ont un but pourtant clair : celui de savoir ce que tu as fait et ce qui "ne marche pas".
    Bonne chance.

    EDIT : et la réponse à ma dernière remarque, à savoir :
    Nous ne savons par ailleurs pas où (dans quoi) tu a mis chacun de ces deux codes, ni comment et à quel moment tu "lances" la sub fu
    est très probablement la raison de ton "ça ne marche pas" !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    fait nous plaisir met ceci dans le module du thisworkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "^{w}" ' on remet les touche a l'initial car normalement cette combinaison de touche sert a autre chose 
    End Sub
    Private Sub Workbook_Open()
    Application.OnKey "^{w}", "fusion" 'on attribue l'action au touche
    End Sub
    et ta sub "fusion" dans un module standard
    c'est bon la c'est clair
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour patricktoulon
    Je te trouve bien "arrangeant".
    J'aurais personnellement laissé le demandeur faire l'effort de répondre aux questions pourtant essentielles qui lui étaient posées et qu'il trouvait "condescendantes" ...
    Tu crois vraiment que tu l'as ainsi aidé à comprendre, à cerner, à avancer, etc ... ?

    Prends s'il te plait au moins le temps de lui expliquer le "pourquoi" du "comment", si tu veux vraiment l'aider à comprendre ce qu'il fait.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. capture d'événement OnKey ne fonctionne pas
    Par sub_zero dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/11/2007, 16h30
  2. Réponses: 11
    Dernier message: 02/10/2007, 11h11
  3. Code php qui ne fonctionne pas
    Par bachir008 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2007, 10h17
  4. mes applications consoles ne fonctionnent pas
    Par mok16 dans le forum C++Builder
    Réponses: 1
    Dernier message: 10/01/2007, 14h22
  5. Réponses: 6
    Dernier message: 23/12/2006, 12h46

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