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 verrouillage numérique


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut Désactivation verrouillage numérique
    Bonjour,

    Je me suis rendu compte que l'exécution de certaines de mes macros pouvaient désactiver le "verrouillage numérique" (cf. clavier).

    Normalement, aucune instruction dans le code, en ce sens.

    Je ne sais pas par où chercher !
    Merci d'avance pour vos lumières.
    Cdt

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    Sans plus de détail sur le code... Sans doute de sendkey...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Ah oui, ça me paraît être une bonne piste !

    Le seul que j'utilise est :
    Je ne vois pas pourquoi il désactiverait le "verrouillage numérique" mais je pense néanmoins que tu as raison.
    Peut-être y a-t-il quelque chose à ajouter après ce SendKeys pour réinitialiser le pavé numérique ?!

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    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
    Citation Envoyé par 78chris Voir le message

    .. Sans doute de sendkey...

    C'est même certain.
    (l'utilisation de Sendkeys est toujours la marque de la pauvreté).
    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.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Beati pauperes spiritu

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    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
    Bien plus heureux sont les sages, jpma ...
    Quel est la finaliuté de ton
    ???
    Ta réponse te permettra peut-être de t'enrichir

    Sauf si tu "pilotes" AINSI (fortement déconseillé) une autre application (laquelle, d'ailleurs ?)
    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.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Les sages, je viens les chercher sur le forum... Je suis une brebis égarée dans l'environnement d'Excel...

    (Je tiens à ce SendKeys et "mes" utilisateurs ne me démentiront pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If [p2] = "-" And ActiveSheet.Name <> "réf." Then
            With Range("k2") 
                .MergeArea.ClearContents 
                .Select
                SendKeys "%{Down}"
            End With
        End If

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    Sans doute pour une liste déroulante : remplace Down par Up et cela évitera le souci
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Affirmatif, pour l'ouverture d'un menu déroulant.

    Je ne peux pas tester tout de suite mais je te tiens au courant dès que possible.

    Merci beaucoup pour cette piste !
    Cdt

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Désolé, même avec "Up" ça affecte le pavé numérique.
    Ce qui est sûr à présent, c'est que c'est bien ce SendKeys qui est à l'origine du "problème".
    Cdt

  11. #11
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    RE

    Bizarre car sur des tests précédents cela solutionnait...

    Edit : je viens de retester sur un fichier où j'avais proposé cette solution ici en juin et cela fonctionne bien. Ton pavé est bien actif avant la macro ?
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Oui, il est bien actif avant la macro.

    Je le surveille quand j'exécute le code pas à pas (avec F8) et le voyant du pavé numérique change d'état suivant que j'ouvre le menu et que je valide une date où que je n'en sélectionne pas. Pour l'instant, ça me paraît un peu aléatoire (je me demande s'il n'y a pas un Worksheet_Change ou un Worksheet_SelectionChange qui y est pour quelque chose. A ce stade, je ne peux guère t'en dire plus.
    Cdt

  13. #13
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    With Range("k2")
                .MergeArea.ClearContents
                .Select
                SendKeys "%{Down}"
                DoEvents
    End With
    SendKeys "{NUMLOCK}"
    SendKeys "{NUMLOCK}"
    Cordialement

    Docmarti.

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Malheureusement...

    En surveillant le voyant de la touche "Num Lock", je vois qu'une même séquence de code ne produit pas systématiquement les mêmes effets. Même "pas à pas", je ne peux (pour l'instant) pas voir où ça coince. Par ailleurs, (et c'est très dommage dans le cas présent), il semble que le pas à pas (F8) ne déclenche pas l'ouverture du menu déroulant... Etrange.

    En faisant une recherche sur le net, avec SendKeys "{NUMLOCK}", je suis tombé sur :

    https://www.developpez.net/forums/d1...dkeys-numlock/

    Ça me rassure un peu que d'autres aient fait ce même constat ! J'ai testé, mais dans mon cas le résultat est aléatoire et donc non-concluant.

    Au pire, il faudrait que je puisse réactiver le verrouillage numérique en toute fin de procédure pour que l'utilisateur ne s'étonne pas que son clavier numérique ne réponde pas comme il le souhaiterait.

    PS : Je ne comprends pas pourquoi il faut répéter la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SendKeys "{NUMLOCK}"
    SendKeys "{NUMLOCK}"

  15. #15
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par jpma75 Voir le message

    En faisant une recherche sur le net, avec SendKeys "{NUMLOCK}", je suis tombé sur :

    https://www.developpez.net/forums/d1...dkeys-numlock/
    La solution de kiki29 dans ton lien semble etre la meilleure car elle ne modifie pas l'etat du clavier numerique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub kiki29()
    Cells(2, 11).Select
     
    Dim Wsh As Object
     
        Set Wsh = CreateObject("WScript.Shell")
        Wsh.SendKeys "%{DOWN}", True
        Set Wsh = Nothing
     
    End Sub
    PS : Je ne comprends pas pourquoi il faut répéter la ligne :
    Le code suivant demontre que, si le clavier numerique est active avant la commande SendKeys "%{Down}", il faut 2 commandes SendKeys "{NUMLOCK}" pour le re-activer par apres.

    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
    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
    Private Const kNumlock = 144
     
    Private Function KeyState(lKey As Long) As Boolean
    KeyState = CBool(GetKeyState(lKey))
    End Function
     
    Public Function NumLock() As Boolean
    NumLock = KeyState(kNumlock)
    End Function
     
    Sub Macro()
      Dim a As Boolean
      With Range("k2")
                '.MergeArea.ClearContents
                .Select
                SendKeys "%{Down}"
                DoEvents
     End With
     
     a = False
     nbr = 0
     While a = False
     SendKeys "{NUMLOCK}"
     nbr = nbr + 1
     DoEvents
     a = NumLock
     Wend
     
    MsgBox nbr
    End Sub
    Cordialement

    Docmarti.

  16. #16
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    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
    Affirmatif, pour l'ouverture d'un menu déroulant
    Précise en détail tout de ce qu'est très exactement ce "menu déroulant".
    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.

  17. #17
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, d'autres possibilités :
    VBA : Connaître l'état d'une touche du clavier
    En adaptant et élaguant ceci

  18. #18
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    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
    La vraie question à se poser est pour moi celle de la raison fondamentale qui conduit à l'utilisation de Sendkeys (voire d'un substitut). Rien de cela n'est véritablement orthodoxe et je suis à peu près certain de ce qu'une autre approche, à commencer par le choix de ce "menu déroulant" aboutirait à quelque-chose de plus stable et de plus convivial.
    C'est la raison de la question que j'ai posée dans mon message précédent.
    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.

  19. #19
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Citation Envoyé par jpma75 Voir le message

    Je tiens à ce SendKeys
    Je rejoins unparia;
    POURQUOI ?
    C'est quoi ton "menu déroulant'

    Si c'est juste pour sortir le curseur d'une cellule, cela peut se faire sans SendKeys.

    Si c'est pour une opération nom-orthodoxe, cela vaut la peine d'expliquer.

    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  20. #20
    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,

    il souhaite simplement "déplier" automatiquement une liste de validation disposée dans cette cellule

    à trop vouloir mâcher le travail des utilisateurs, on finit parfois par en perdre ses cheveux

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Désactiver le verrouillage ordinateur
    Par Mut dans le forum Windows XP
    Réponses: 11
    Dernier message: 01/02/2018, 21h12
  2. Réponses: 0
    Dernier message: 28/09/2008, 18h23
  3. Réponses: 2
    Dernier message: 08/03/2007, 14h32
  4. Détecter le verrouillage numérique ?
    Par harold63 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/09/2006, 14h54
  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