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 :

Désactivation du pavé numérique à cause d'un code vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2017
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2017
    Messages : 45
    Par défaut Désactivation du pavé numérique à cause d'un code vba
    Bonjour tout le monde,

    je me permets de vous demander votre aide pour un truc qui me laisse totalement perplexe...

    j'ai fait un tout petit code (s'inspirant très fortement d'un code trouvé sur un forum) utilisant les fonctions onKey et sendKey permettant de faire un enregistrement automatique d'un fichier toutes les 5 pressions de la touche "entrée" du clavier numérique
    (j'ai fait ça à cause d'un problème de stabilité d'un fichier depuis une migration vers excel 2013 64b dont notre nouvel infogérant semble se moquer totalement, bref...)
    vous trouverez en pièce jointe le fichier en question dont voila le code :

    dans la macro d'ouverture du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
     
    countPressEnter = 0
    Application.OnKey "~", "countPressTime"
     
     
     
    End Sub
    dans un module :
    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
    Dim countPressEnter As Integer
     
     
    Private Sub countPressTime()
        countPressEnter = countPressEnter + 1
        Application.SendKeys ("{ENTER}")
     
    If countPressEnter = 5 Then
         ActiveWorkbook.Save
         Application.SendKeys ("{ENTER}")
         countPressEnter = 0
         CreateObject("Wscript.shell").Popup "Sauvegarde effectuée", 1, "Sauvegarde"
         Else: Exit Sub
    End If
    End Sub
    le code fonctionne parfaitement bien : toutes les 5 pressions de la touche entrée, une sauvegarde s'effectue et un pop up s'affiche pour le signaler
    donc tout semble parfait sauf que.......... et ben sauf que pour une raison qui m'échappe totalement, à chaque pression de la touche "entrée" du clavier principal, le pavé numérique se désactive !!!

    et là, j'ai besoin de vous pour comprendre

    un grand merci pour votre aide !
    julienTest sauvegarde toutes les 5 pressions de la touche entrée.xlsm

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Presque personne n'ouvre les fichiers balancés avec la première question.

    Et encore moins les fichiers de macros

    Et puis, il y a bien plus simple que ta patente:
    Le minimum c'est une minute. Au pire le travail perdu se limite à l'intervalle.

    Nom : Excel.jpg
Affichages : 3629
Taille : 75,9 Ko

    Et/ou, développer le réflexe de cliquer dans la barre d'outils Accès rapide:

    Nom : Excel1.jpg
Affichages : 3503
Taille : 13,5 Ko

    Si l'icone n'est pas affichée, tu peux l'afficher et même l'ajouter.

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, pb connu et récurrent pour cela utiliser le Shell pour tous les SendKeys. Cela si tu n'as pas opté pour la solution de Clément plus simple et efficace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With CreateObject("WScript.Shell")
        .SendKeys ....
        .....
    End With

  4. #4
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2017
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2017
    Messages : 45
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, pb connu et récurrent pour cela utiliser le Shell pour tous les SendKeys. Cela si tu n'as pas opté pour la solution de Clément plus simple et efficace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With CreateObject("WScript.Shell")
        .SendKeys ....
        .....
    End With
    Salut Kiki !
    merci pour ton aide
    mais je ne connais pas le shell, peux tu m'en dire un peu plus sur le pourquoi du comment?

    j'ai essayé avec ca :

    Dim countPressEnter As Integer


    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
    Private Sub countPressTime()
        countPressEnter = countPressEnter + 1
     
    With CreateObject("WScript.Shell")
        .SendKeys ("{ENTER}")
    End With
     
     
    If countPressEnter = 5 Then
         ActiveWorkbook.Save
         countPressEnter = 0
         CreateObject("Wscript.shell").Popup "Sauvegarde effectuée", 1, "Sauvegarde"
    '     Application.SendKeys ("{ENTER}")
         Else: Exit Sub
    End If
    End Sub
    mais ça fait tourner la macro en boucle, je suis obligé de l'arrêter à la main...

    julien

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    re, puisque tu sembles partisan de la complexification des applis va voir VERR MAJ et VERR NUM dans userform , à adapter à ton contexte.

  6. #6
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2017
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2017
    Messages : 45
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    re, puisque tu sembles partisan de la complexification des applis va voir VERR MAJ et VERR NUM dans userform , à adapter à ton contexte.
    Merci beaucoup, je vais regarder avec attention
    et comme je sens un peu de sarcasme dans ta réponse , je vais simplement préciser que je suis adepte du plus simple, mais je fais aussi ce que je peux avec ce que j'ai, c'est à dire une bande d'informaticien persuadés que si le fichier plante inopinément, c'est la faute du fichier... alors qu'avant la migration chez eux, ça marchait parfaitement bien, et que sur la version excel installée sur le serveur TSE, ça marche aussi parfaitement bien...
    donc face à un mur qui refuse d'admettre que l'excel installé sur les postes est mal installé, je me débrouille comme je peux et avec l'aide de gens comme toi qui est ultra précieuse !

    julien

  7. #7
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2017
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2017
    Messages : 45
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour

    Presque personne n'ouvre les fichiers balancés avec la première question.

    Et encore moins les fichiers de macros
    Ah ok désolé, j'ignorais, mais c'est vrai qu'en y repensant, c'est assez logique

    Citation Envoyé par clementmarcotte Voir le message
    Et puis, il y a bien plus simple que ta patente:
    Le minimum c'est une minute. Au pire le travail perdu se limite à l'intervalle.

    Nom : Excel.jpg
Affichages : 3629
Taille : 75,9 Ko

    Et/ou, développer le réflexe de cliquer dans la barre d'outils Accès rapide:

    Nom : Excel1.jpg
Affichages : 3503
Taille : 13,5 Ko

    Si l'icone n'est pas affichée, tu peux l'afficher et même l'ajouter.
    En fait je l'ai faite probablement un peu trop courte dans mon premier post pour pas ennuyer avec les détails, mais ça aurait surement valu le coup finalement.
    La sauvegarde automatique ne fonctionne pas correctement car le fichier qui pose problème fonctionne avec des liens OLE vers un logiciel de compta. Et quand le fichier plante et qu'on se fait sortir d'Excel sauvagement, ça "casse" tout, et c'est une vraie galère pour les restaurer. Résultat, c'est beaucoup plus simple de repartir de la dernière sauvegarde propre que l'on a

    Pour le réflexe ctrl+s ou l'icone de sauvegarde, je suis d'accord, mais ce n'est pas le cas de tout le monde, et parfois, quand on est dans le boulot, beaucoup de collègues n'y pensent pas, et perdent plusieurs dizaines de minutes de travail, ce qui peut représenter pas mal de remplissage du fichier...

    julien

Discussions similaires

  1. [AC-2003] empêcher l'activation-désactivation du pavé numérique
    Par electrosat03 dans le forum VBA Access
    Réponses: 16
    Dernier message: 17/11/2010, 17h11
  2. pavé numérique désactivé après utilisation d'une VM
    Par trotters213 dans le forum Ubuntu
    Réponses: 0
    Dernier message: 19/02/2009, 18h54
  3. [VB.NET]Virgule sur le pavé numérique
    Par jab dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/06/2006, 09h27
  4. Réponses: 7
    Dernier message: 06/11/2005, 14h47
  5. désactiver le pavé numérique
    Par soad dans le forum C++
    Réponses: 7
    Dernier message: 08/02/2005, 09h32

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