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 :

Raccourci clavier ne fonctionne pas - la macro commence mais s'arrête au début [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut Raccourci clavier ne fonctionne pas - la macro commence mais s'arrête au début
    Bonjour à toutes et à tous,

    J'ai un code qui fonctionne si je le déclenche à partir de la fenêtre "Afficher les macros", mais qui s'arrête au début du code si je l'actionne avec un raccourci clavier.

    J'ai déjà rencontré un problème de raccourci clavier qui ne fonctionnait pas du tout et la cause était que les noms de la macro et du module étaient le même. Mais ce n'est pas le cas en l'occurrence.

    J'ai essayé Ctrl+Shift+T, Z, U, I et surtout, R, qui fonctionne avec une autre macro (j'ai bien sûr pris soin d'enlever ce raccourci de cette dernière); même résultat.

    Je n'ai pas de message d'erreur. La commande d'ouverture de classeur fonctionne, mais ça s'arrête là. Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test()
     
            Dim data As Workbook
            Dim dc As Workbook
     
            Set data = ActiveWorkbook
            Set dc = Workbooks.Open("T:\Chemin\Nom de fichier.xlsx")
     
            Application.DisplayAlerts = False
        data.Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
        Application.DisplayAlerts = True
            'Supprime les 3 dernières feuilles vides sans demander de confirmation
     
    End Sub
    Sauriez-vous ce qui pourrait provoquer un tel problème?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Bonjour,


    Quand tu dis: J'ai un code qui fonctionne, mais qui s'arrête au début du code , tu veux dire quoi ?
    Le code génère une PopUp d'erreur ? Le compilateur execute 2 lignes puis quitte la sub ?

    Tu as essayé de l'executer Pas à Pas ?

    Slooby

  3. #3
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Bonjour,

    Je serais toi je commencerai par essayer sans les displayAlerts.
    Ensuite, vérifie le nom de tes feuilles.

    Et surtout, effectue une exécution pas à pas avec le débogueur.

    Cdt,

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    exemple
    code a mettre dans un module d'une feuill
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Activate()
    Application.OnKey "{a}", "test"
    End Sub
    Private Sub Worksheet_Deactivate()
    Application.OnKey "{a}", ""
    End Sub
    quand tu changera le sheets qui contient ce code la touche a appellera la sub test
    quand tu quittera ce sheets la touche a redeviendra la touche a
    pas compliqué
    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

  5. #5
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Merci pour vos réponses.

    Citation Envoyé par Slooby Voir le message
    Quand tu dis: J'ai un code qui fonctionne, mais qui s'arrête au début du code , tu veux dire quoi ?
    La phrase entière est "J'ai un code qui fonctionne si je le déclenche à partir de la fenêtre "Afficher les macros", mais qui s'arrête au début du code si je l'actionne avec un raccourci clavier".
    Les parties en gras expliquent le pourquoi de ma question.


    Citation Envoyé par Slooby Voir le message
    Le code génère une PopUp d'erreur ?
    La réponse est à la 5e ligne de mon premier message: "Je n'ai pas de message d'erreur".


    Citation Envoyé par Slooby Voir le message
    Le compilateur execute 2 lignes puis quitte la sub ?
    Oui, en effet, c'est apparemment ce qu'il se passe.


    Citation Envoyé par Slooby Voir le message
    Tu as essayé de l'executer Pas à Pas ?
    Non, car il fonctionne lorsque je l'exécute sans raccourci. Mais pour vous faire plaisir, je l'ai fait et, confirmation, la macro fonctionne.


    Citation Envoyé par jeanmidudu Voir le message
    Je serais toi je commencerai par essayer sans les displayAlerts.
    Je ne suis pas sûr de comprendre ce que tu veux dire. Mon code indique bien Application.DisplayAlerts = False. Je l'ai mis au début du code pour la forme mais ça ne change rien: le classeur dc s'ouvre, mais les feuilles du classeur data ne sont pas supprimées et le classeur dc ne se referme pas:
    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
    Sub Test()
     
            Application.DisplayAlerts = False
     
            Dim data As Workbook
            Dim dc As Workbook
     
            Set data = ActiveWorkbook
            Set dc = Workbooks.Open("T:\Chemin\Nom de fichier.xlsx")
     
            data.Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
            'Supprime les 3 dernières feuilles vides sans demander de confirmation
     
            dc.Close
     
    End Sub

    Citation Envoyé par jeanmidudu Voir le message
    Ensuite, vérifie le nom de tes feuilles.
    Les noms sont corrects. Encore une fois, le code fonctionne sans raccourci.


    Citation Envoyé par jeanmidudu Voir le message
    Et surtout, effectue une exécution pas à pas avec le débogueur.
    Même remarque que pour Slooby.


    Citation Envoyé par patricktoulon Voir le message
    code a mettre dans un module d'une feuill
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Activate()
    Application.OnKey "{a}", "test"
    End Sub
    Private Sub Worksheet_Deactivate()
    Application.OnKey "{a}", ""
    End Sub
    quand tu changera le sheets qui contient ce code la touche a appellera la sub test
    quand tu quittera ce sheets la touche a redeviendra la touche a
    Merci pour ce truc, mais je dois utiliser cette macro dans un nombre indéfini de classeurs et dans toutes les feuilles.

    D'autres idées?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    La solution de Patricktoulon est la meilleure.

    Si 2 classeurs ont tous les 2 la même combinaison de raccourci ça posera forcément problème !

    Tu dois donc t'assurer qu'une combinaison est utilisé par 1 seul classeur à la fois.

    Donc à la rigueur, place le code de PatrickToulon dans l'événement du classeur (au lieu de la feuille), tu auras moins de code à dupliquer.
    Mais tu es obligé de passer par là si tu veux éviter les confrontation de raccourci entre plusieurs classeurs.


    Slooby


    PS: Patricktoulon, on ne t'a jamais dit que tu ressembles à Florent Pagny ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Petite précision: j'ai essayé d'affecter un raccourci à un autre code, nouveau et simple, et le même raccourci fonctionne avec ce dernier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test2()
     
        MsgBox "Bonjour"
     
    End Sub
    Le problème est donc bien lié au code.

    Il y a quelque chose dans le code qui l'empêche de s'exécuter jusqu'au bout quand on l'appelle avec un raccourci.

    Citation Envoyé par Slooby Voir le message
    Si 2 classeurs ont tous les 2 la même combinaison de raccourci ça posera forcément problème !

    Tu dois donc t'assurer qu'une combinaison est utilisé par 1 seul classeur à la fois.
    Toutes mes macros sont enregistrées dans le classeur de macros personnel, si bien qu'elles sont utilisables dans tous les classeurs (et toutes les feuilles). J'ai trois raccourcis clavier qui fonctionnent pour trois de ces macros dans n'importe quel classeur et je n'ai aucun autre raccourci clavier, et pour cause, je n'ai aucun autre type de macro.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut
    salu snooby
    PS: Patricktoulon, on ne t'a jamais dit que tu ressembles à Florent Pagny ?
    la prochaine fois que tu va a la plage met une casquette , t'a pris un coup de chaud

    si je ne me trompe pas les classeur xlb (perso )se d'éclanche a l'ouverture d'Excel non??

    dans ce cas la met les code dans workbook_open du xlb
    voili voilou
    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

  9. #9
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    si je ne me trompe pas les classeur xlb (perso )se d'éclanche a l'ouverture d'Excel non??
    En ce qui me concerne, le classeur PERSONAL.xlsb s'ouvre automatiquement à l'ouverture d'Excel.


    Citation Envoyé par patricktoulon Voir le message
    dans ce cas la met les code dans workbook_open du xlb
    C'est bien à ce classeur (PERSONAL.xlsb) que sont liées les macros:

    Nom : Capture.PNG
Affichages : 1932
Taille : 2,4 Ko

  10. #10
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    C'est la commande Workbooks.Open qui pose problème. Elle stoppe l'exécution de la macro lorsqu'elle est déclenchée par un raccourci.

    J'ai essayé sans cette commande en ouvrant préalablement le classeur dc et le code s'effectue jusqu'au bout.

    Est-ce un bogue VBA/Excel??

    Le nouveau code qui fonctionne avec un raccourci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test()
     
            Dim data As Workbook
            Dim dc As Workbook
     
            Set data = ActiveWorkbook
            Set dc = Workbooks("Nom de fichier.xlsx")
     
            Application.DisplayAlerts = False
        data.Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
        Application.DisplayAlerts = True
            'Supprime les 3 dernières feuilles vides sans demander de confirmation
     
    End Sub
    En revanche, ce code s'arrête dès l'ouverture d'un classeur avec un raccourci (alors qu'il va jusqu'au bout sans):
    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
    Sub Test()
     
            Dim data As Workbook
            Dim dc As Workbook
     
            Set data = ActiveWorkbook
            Set dc = Workbooks("Nom de fichier.xlsx")
     
            Application.DisplayAlerts = False
        data.Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
        Application.DisplayAlerts = True
            'Supprime les 3 dernières feuilles vides sans demander de confirmation
     
            dc.Worksheets.Add
            'Ajoute une feuille
     
            Workbooks.Open ("T:\Chemin\TEST VBA.xlsx")
            'Ouvre un classeur
     
            MsgBox "Bizarre"
            'Affiche un message
     
    End Sub
    Les feuilles sont supprimées dans le classeur data, une feuille est ajoutée dans le classeur dc et le classeur s'ouvre bien, mais le message ne s'affiche pas.

    Quelqu'un-e saurait-il/elle résoudre ce problème?

  11. #11
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut Résolution
    Pour clore la boucle, la réponse est dans cette discussion:


    Merci pour vos efforts

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

Discussions similaires

  1. Raccourcis qui ne fonctionne pas sur NetBean
    Par tonymx15 dans le forum Mac OS X
    Réponses: 4
    Dernier message: 11/10/2010, 20h31
  2. Evènement clavier : ne fonctionne pas
    Par casafa dans le forum wxWidgets
    Réponses: 8
    Dernier message: 30/06/2008, 23h29
  3. raccourci clavier ne fonctionnant pas
    Par vinc-mai dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 04/02/2008, 17h58
  4. Clavier ne fonctionne pas portable ASUS
    Par phy4me dans le forum Périphériques
    Réponses: 6
    Dernier message: 09/10/2007, 18h38
  5. Réponses: 3
    Dernier message: 20/06/2006, 09h59

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