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 :

Valider une entrée clavier suivant le n° de DeviceID ?


Sujet :

Macros et VBA Excel

  1. #1
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut Valider une entrée clavier suivant le n° de DeviceID ?
    Bonjour,

    Visiblement il est compliqué et liste trop lente (mini 7'' par requête)) pour connaître le DeviceID d'un clavier usb filaire.
    https://www.developpez.net/forums/d1...s/#post8991584

    Je parts donc sur une autre idée puisque le code suivant donne le DeviceID d'un récepteur HF d'un clavier HF

    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 usb_2()
     'https://msdn.microsoft.com/en-us/library/aa394587(v=vs.85).aspx
     ' affiche hub mais pas l'id clavier filaire usb
     ' affiche id d'une clé usb
     ' affiche id recepteur hf clavier
     
    Sheets("usb_2").Select
     [A1:B1048576].ClearContents
     
    i = 1
     strComputer = "."
     Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
     Set colItems = objWMIService.ExecQuery("Select * from Win32_USBHub")
     
     For Each objItem In colItems
        ' Wscript.Echo "Device ID: " & objItem.DeviceID
        ' Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
        ' Wscript.Echo "Description: " & objItem.Description
        ' Wscript.Echo
     
         Range(Cells(i, 1), Cells(i, 2)) = "Device ID: " & objItem.DeviceID
         ' Range(Cells(i, 2), Cells(i, 2)) = "PNP Device ID: " & objItem.PNPdeviceID
         i = i + 1
     
     Next
     End Sub
    j'ai donc par exemple cet ID: Device ID: USB\VID_046D&PID_C52B\7&18384972&0&1 en A1 feuille1 pour le clavier hf1
    Comment faire pour que le clavier n°1 affiche la saisie dans la cellule A1 de la feuille2
    le clavier n°2 cellule B1 de la feuille2 et ainsi de suite...
    la saisie est validée par ''enter'', comment lancer la macro pour scanner les claviers et ainsi leur dire dans quelle cellule écrire après avoir validé par enter ?
    Il peut y avoir 6 claviers (j'espère qu'il n'y aura pas d'interférence puisqu'ils les récepteurs seront tous raccordés sur le même hub_usb)
    info : Win10-64bits / Excel 2010-32bits

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    Les saisies clavier et autres dispositifs d'entrée s'effectuent uniquement sur la cellule active …

    Si ces claviers disposent d'une API accessible en VBA pour y accéder et pouvant être reconfigurés pas comme clavier direct
    ce serait envisageable, sinon je ne vois pas l'intérêt de six claviers sur la même unité centrale, le gros délire !

    VBA est souvent considéré comme de la daube mais c'est fou le nombre de fois que la Lune lui est réclamée …

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Bonsoir
    Je ne demande ni la lune ni l'impossible, ce n'est pas du délire non plus mais tu as de l'humour donc rien d'impossible....
    Pourquoi faire 6 claviers ?
    Imagine 6 jurés, non pas au tribunal, nos jurés à nous notes simplement des photos ,-)
    Et donc ... chacun saisi sa note
    Si impossible l'on reste au papier donc 250 photos * 6 = 1500 saisies à faire avant de connaître le gagnant !

    As-tu une autre idée ?
    Merci

    Bonne soirée

  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
    Bonjour
    Il n'est à ma connaissance pas possible de déterminer si la touche pressée (et donc la saisie) est faite depuis tel ou tel autre clavier "standard". Mais je peux me tromper
    Pas plus (mais je peux me tromper également) qu'il n'est à ma connaissance possible d'inhiber séparément tel ou tel autre clavier (que ce soit au selection_change de Excel ou autrement).
    Qu'il y ait (toujours à ma connaissance) qu'un ou plusieurs claviers, ils seront considérés comme un seul clavier.

    EDIT : je vois d'ailleurs que ce n'est pas la première fois que ce sujet est ouvert --->>
    https://www.developpez.net/forums/d9...rs-differents/

    voilà donc.

    EDIT 2 :
    Imagine 6 jurés, non pas au tribunal, nos jurés à nous notes simplement des photos ,-)
    Et donc ... chacun saisi sa note
    l'analogie ne tient pas la route. 6 jurés = 6 cerveaux distincts (donc 6 ordinateurs "saisisseurs" distincts par analogie, chacun gérant ses saisies et non un seul ordinateur gérant des "saisisseurs" distincts ).
    Un seul cerveau avec 6 bras distincts (genre déesse Shiva ?) ? Cela ne ferait qu'UN juré.

    Il doit probablement exister sur le marché des appareils (pas des claviers standards) capables de s'identifier et dotés d'un pilote ad hoc. Mais on s'écarte là du développement en soi
    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
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Oui, ton raisonnement tient. Impossible pour nous d'acheter au moins 6 ordi (hors budget pour nous) de tout façon il faut compiler les donner mais je pense que c'est assez simple, il existe bien des systèmes de vote (hors budget pour nous) mais que de toute façon il faudrait adapter.
    Je pensais naïvement que l'on pouvait à partir de l'id du clavier lui dire dans quelle cellule il devait écrire
    Je me suis basé sur les données de usbdview qui donne le n° de port utilisé d'un hub par exemple, il est vrai qu'il donne le n° de port connecté mais ne détecte pas si l'on saisi !

    Merci quand pour ta réponse

  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
    Impossible pour nous d'acheter au moins 6 ordi (hors budget pour nous)
    Quand on n'a pas d'argent, on essaye de se débrouiller avec les moyens du bord.
    6 claviers coûtent aujourd'hui quelques sous boliviens si l'on se contente de claviers de bas de gamme, voire d'occasion.
    Alors ? -->> si un clavier ne peut s'identifier lors de la frappe, on peut par contre imaginer de l'empêcher physiquement d'utiliser des touches de fonctions autres que celle qu'on lui laisse.
    Ah ! Que bueno ! -->>
    1) j'enlève physiquement à l'un d'entre eux toutes les touches de fonction, sauf la F1, à l'autre : je ne laisse que la F2, etc ...
    2) je ne permets de saisies que si précédées de l'utilisation d'une touche de fonction F1, F2, ... F6.
    3) j'attribue 6 hotkeys, une pour F1, l'autre pour F2, etc ... (par la fonction RegisterHotKey de la librairie user32 de l'Api de Windows). Chacune de ces hotkeys me conduisant à une seule cellule (celle correspondant à F1, etc ...)
    Je te laisse continuer ...
    Seuls inconvénients :
    - un seul utilisateur à la fois
    - mettre donc en place (facile) quelques lignes de code pour gérer cela : si par exemple, F2 a est en cours pour une saisie dans la cellule C2, inhiber tout autre accès aux autres cellules (de vote) tant que C2 est sélectionnée.
    Tout cela est réalisable
    Amitiés
    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
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    Merci de te pencher sur ma problématique
    C'est peut être la solution à moindre cout, mais ça se complique parce qu'il y a 14 notes possibles par juré (84 touches)... Peut être aussi que l'on peut demander au juré qui vote de s'identifier avant par F1=juré1, F2=juré2, etc. Il y aura toujours quelqu'un qui oubliera de le faire avant de noter.
    j'avais aussi pensé à un swichter de port usb pilotable (un KVM inversé ?) je n'ai pas vraiment cherché.
    Comme tu le dis si justement, avec les moyens du bord et de l'imagination l'on devrait y arriver. Je ne suis pas un spécialiste du VBA c'est pour cette raison que je viens vers vous.

    Bien à toi
    Bonne journée

  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 : 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
    j'avais aussi pensé à un swichter de port usb pilotable (un KVM inversé ?) je n'ai pas vraiment cherché.
    Puisque tu utilises des claviers HF --->>
    Pas la peine de payer un tel switcher, que tu peux aisément remplacer par des cages de faraday basculantes maintenues dressées par un ressort et que l'on rabat vers le bas à la demande en tirant sur un cordon (tous les cordons aboutissant entre les mains du "chef de cérémonie").
    Tu peux confectionner de telles cages avec un grillage fin de cuivre, mais également avec un simple papier d'aluminium froissé.
    Rôle du maître de cérémonie alors :
    1) n'autoriser (au selection_Change) que les cellules d'un juré
    2) ne tirer que sur le cordon faisant basculer vers le bas la cage de faraday du juré qu'il met en situation de vote. ( relâcher en fin de vote. Le ressort la redressera)
    Peu orthodoxe, mais assez rigolo

    EDIT : toujours dans le genre rigolo, mais si tu es un peu adroit de tes mains :
    - tu enlèves la pile de chacun des claviers "jurés" et remplace toutes ces piles par une seule, sur un "tableau" entre les mains du "chef de cérémonie").
    - tu relies par deux fils les deux bornes (du récepteur de pile de chaque clavier) au "tableau" général. Un fil vers le + de la pile générale et l'autre vers le -, mais avec un bouton interrupteur pressoir qui ne ferme le circuit que si pressé
    Ne pourra alors se servir de son clavier que celui qu'aura choisi le maître de cérémonie (lequel aura bien évidemment pris préalablement le soin de mettre au selection_change de quoi ne permettre que les cellules destiné au juré à qui il donne la possibilité de voter
    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
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    ... On rigole bien ici ! je le vois bien avec un buzzer le 1er qui appuie à gagné ou lors on lance les piles en l'air et le 1er qui les attrapes peut voter...
    Pauvre VBA...

    Donc le 1er qui trouve aura gagné, je ne désespère pas, les claviers sont bien identifiés, je pense qu'il doit y avoir une solution avec du hardware ou pas

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    La solution est ces claviers ne doivent pas être reconnus comme claviers standards
    - requérant donc des compétences autre que VBA s'il faut créer un driver spécifique ! -
    pour contourner le fonctionnement Windows d'un clavier unique et disposant d'une interface COM par exemple
    ou toute autre interface accessible via du VBA au risque d'une certaine usine à gaz …

    J'aimerais juste savoir le prix de ces claviers car vu déjà le prix des notebooks d'entrée de gamme,
    doutant de l'économie réelle et de la faisabilité d'un tel delirium sous Windows !

    Une conception via un ordinateur et un système classique de votes papier ou par panneaux / talkie-walkies
    (un peu d'imagination diable !) étant tellement évidente et peu coûteuse …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Clavier => J'en ai vu à moins de 12€ (Pavé Numérique Sans Fil 2.4 GHz 18 Touches)
    Tablette android à moins de 40€ ! mais comment envoyer les infos vers le pc et avec quelle application ?
    Tablette avec win 10 à moins de 100€
    A ces prix quelle fiabilité ?

    Tu as peut être raison, ça vaudrait peut être le coup d'investir mais il faut envoyer les saisies sur un pc avec Excel, vous savez certainement faire

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    C'est un méga délire pour deux raisons :

    • le fonctionnement d'Excel attendant de Windows les évènements du clavier
    • le fonctionnement de Windows à clavier unique !

    Excel n'étant pas prévu pour cela, n'ayant aucune possibilité de paramétrage de ce côté là, donc à oublier !

    Il faudrait développer une application sur mesure scrutant chaque ID de clavier
    afin d'intercepter et alimenter par exemple des fichiers textes importables au final dans Excel …

    Sans compter l'énorme problème d'ergonomie côté utilisateurs : verront-ils au moins ce qu'il saisissent ?‼


    Si utilisation de tablettes, pas de souci si elles disposent d'un port USB permettant donc de copier
    un fichier texte des notes afin de pouvoir l'importer sur l'ordinateur disposant d'Excel …
    Certaines peuvent aussi avoir la capacité de connexion en Bluetooth.
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Oui tu as raison avec une tablette aux yeux bridés ,-) le budget est raisonnable, je ne sais pas si l'on peut exporter la saisie en live...

  14. #14
    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
    Y a personne qui a pensé à faire faire de l'exercice aux juges en les faisant défiler devant un seul clavier. À ceux qui trouvent cela long, on leur offre des rafraîchissements avec un peu d'alcool dedans, ou bien quelques pichets de café.
    À 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.

  15. #15
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    Je ne pensais pas trouver autant d'humour sur un forum hyper spécialisé et c'est tant mieux , comme dit un proverbe VBA, plus il y a de de fous plus on rigole Pas d'alcool, l'on conduit après et puis ça pourait fausser les résultants ,-)
    Pour continuer dans le délire avec un petit clavier sur roues et pilotable par l'assesseur c'est encore plus fun...

Discussions similaires

  1. Interpréter une entrée clavier
    Par Invité dans le forum C++
    Réponses: 5
    Dernier message: 29/12/2010, 00h41
  2. Lire une entrée clavier
    Par Azael dans le forum Groovy
    Réponses: 4
    Dernier message: 15/12/2010, 14h27
  3. Affectation d'une entrée clavier à une variable
    Par AndreDvl dans le forum Tkinter
    Réponses: 3
    Dernier message: 12/09/2007, 23h42
  4. Valider une entrée par tty
    Par psjylife dans le forum Administration système
    Réponses: 1
    Dernier message: 17/04/2007, 07h54
  5. Comment annuler une entrée clavier?
    Par doudine dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 17/02/2006, 11h22

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