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

VBScript Discussion :

FCT en Background pour mettre en maj les lettres


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut FCT en Background pour mettre en maj les lettres
    Bonjour,

    je fais suite au message ci-dessous:

    http://www.developpez.net/forums/d78...maj-actif-non/

    Peut être avez vous une meilleure idée que moi pour ce que je dois faire...


    Comme vous pouvez le voir ci-dessus, il y a un champ "Code".

    Les codes sont tous en Majuscules (d'où le post précédent).
    J'aimerais que lorsqu'on cherche un code, les lettres s'affiche en MAJ (mais pas les tirets).

    Dans le programme, un script VBScript est affectable à l'ouverture, la fermeture ou la validation d'une fenêtre.


    Le défaut de "rendre active" la touche VERR MAJ (post précédent) est que les tirets deviennent des 6 (ce qui est encore acceptable).
    Mais surtout, si on change de fenêtre qu'on désactive la touche VERR MAJ et qu'on revient sur le champs code, alors la touche reste désactivée...

    J'ai eu deux idées pour réaliser ce que je veux:
    La première étant de détecter l'appui sur la toucher "entrer" ou le clic avec la souris en dehors du champ.
    Cependant, le champ code est un champ de recherche automatique, aussi, il recherche à chaque lettre écrite:
    Exemple, si on tape "12" il sort toutes les lignes commençant par "12" sans besoin d'appuyer sur "entrer". Cette méthode est donc à oublier.

    La seconde méthode est de changer toutes les lettres à leur appui en majuscule.
    Pour cela, j'ai besoin de lancer une fonction en Background. (puisque les script ne sont activables qu'à l'ouverture etc.)
    D'après ce que j'ai pu voir sur le net, il faut créer un objet WSH.

    J'ai créé une fonction qui met en maj le champ code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub UpperCaseCode()
        'Mise en majuscule du Code
        If txtQuickSearch = "Code" Then
            SetValue "saiQuickSearch", Ucase(GetValue("saiQuickSearch"))
        End If
    End Sub
    Maintenant j'aimerais activer la fonction à chaque appui sur une touche.
    J'ai trouvé des scripts, mais je suis toujours perdu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run("UpperCaseCode")
    WScript.Sleep 200
    WshShell.AppActivate "UpperCaseCode"
    Pouvez vous m'aidez à réaliser cela ?

    Merci de Votre Aide.

    Prosciuto

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    Dans le programme, un script VBScript est affectable à l'ouverture, la fermeture ou la validation d'une fenêtre.
    ah là je comprends mieux...

    mais faute de doc, je ne peux pas deviner la façon dont le moteur vbs a été intégré au logiciel et les éléments qui y sont exposés (modèle objet ou autre)

    quant à intervenir de "l'extérieur", cela revient à faire un hook système sur le clavier et le vbs n'est pas vraiment l'outil idéal pour ça
    il existe peut-être sur le net un outil capable de modifier la casse des entrées clavier
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par omen999 Voir le message
    bonjour,

    ah là je comprends mieux...
    Je ne sais pas quoi.. mais moi je comprend pas mieux :joke:

    Citation Envoyé par omen999 Voir le message
    mais faute de doc, je ne peux pas deviner la façon dont le moteur vbs a été intégré au logiciel et les éléments qui y sont exposés (modèle objet ou autre)
    Le problème c'est que la doc est presque inexistante (comme tous les produits bon marché j'ai l'impression) mais je sais qu'on peut faire du WSH puisque je l'utilisais pour activer la touche "V.M."

    Citation Envoyé par omen999 Voir le message
    quant à intervenir de "l'extérieur", cela revient à faire un hook système sur le clavier et le vbs n'est pas vraiment l'outil idéal pour ça
    il existe peut-être sur le net un outil capable de modifier la casse des entrées clavier
    Pour ça, je ne comprend pas vraiment l'expression "hook système" mais je vais chercher pour voir si je trouve quelque chose.
    Sinon, le logiciel m'oblige à coder en VB donc je n'ai pas le choix, il faut que je trouve.

    A ton avis, est-il possible de créer un "mini programme" dans un autre langage et de l'appeler via le script WSH (comme la calculette dans cette exemple) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run("calc.exe")
    WScript.Sleep 200
    WshShell.AppActivate "Calculatrice"
    Merci pour ton aide.

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    Le problème c'est que la doc est presque inexistante
    c'est le modèle économique qui veut ça, le bouzin est vendu à prix plancher et la marge se fait sur la formation, l'assistance, les abonnements et ce serait gâcher le métier que de fournir une doc trop précise
    mais il doit bien y avoir un minimum sur le sujet ?

    pour ce qui est d'un outil extérieur, il faudrait qu'il soit suffisamment rusé pour reconnaitre le masque et réactiver le capslock
    car s'il faut l'activer manuellement autant appuyer sur la touche capslock...
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par omen999 Voir le message
    mais il doit bien y avoir un minimum sur le sujet ?
    Il y a bien une "mini doc" qui mentionne certaines fonctions qui pourraient m'être utiles comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function UseLibrary(dll as String) as Boolean
    function CreateRecordSet(SQL as String) as Object
    function CreateProcedure(function as String, package as String (optionnel), shema as String (optionnel)) as Object
    function GetHInt control as String as String
    Puis des sub:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub GetValue(fid as Variant) as Variant
    sub SetValue(fid as Variant, value as Variant)
    sub SetHint control as String, value as String
    sub AppelAction(Action as String) => Lance une action donnée
    sub EnumereActions(mask as String, soft as String (optionnal)) as String => Retourne une liste de toutes les actions disponibles
    Après test, GetHint et SetHint s'utilise de la même façon que Get/SetValue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sub GetHint(control as String) value as String
    Ce qui me laisse dubitatif sur la qualité de la doc...

    Citation Envoyé par omen999 Voir le message
    pour ce qui est d'un outil extérieur, il faudrait qu'il soit suffisamment rusé pour reconnaitre le masque et réactiver le capslock
    car s'il faut l'activer manuellement autant appuyer sur la touche capslock...
    Le but c'est de ne plus avoir a appuyer dessus justement ^^
    J'ai été occupé ce matin, je ferais des test plus tard et tiendrais au courant.

    Bonne journée.

  6. #6
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    maintenant, ton exemple de code initial UpperCaseCode est limpide
    seulement, il ne peut être résolu que si le script gère les événements sur les contrôles et plus précisément l'événement "OnChange" qui se déclenche lorsque le contenu du contrôle "saiQuickSearch" se modifie par l'action de l'utilisateur sur le clavier

    en outre la doc décrit une syntaxe plutôt conforme à vba office que vbs ce qui ne serait pas impossible puisque microsoft a vendu ce type de licence à des éditeurs tiers
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    En fait, c'est ce que j'appelais "appeler ma fonction en boucle".
    C'est pour ça que je voulais créer une fonction qui appelais ma fonction UpperCaseCode() à chaque appui sur une touche.
    J'ai vu qu'en VBS on pouvait faire du multithread.
    Mon idée était donc d'écouter l'appui sur les touches dans un thread secondaire et d'appeler la fonction "UpperCaseCode" dans le thread principal.
    En gros, c'était reproduire l'évènement OnChange.

    Maintenant je peux essayer de voir si c'est de la forme de VBA Office, et alors peut être que la fonction OnChange existe d'origine.

    Aurais tu une page d'aide pour VBA Office ? (je vais de ce pas voir sur le forum )

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    J'ai trouvé comment utiliser onChange sur le msdn:
    http://msdn.microsoft.com/en-us/libr...ffice.11).aspx

    Je regarde si ça fonctionne dans mon logiciel

    [Edit] Après test:

    La propriété OnChange est une propriété d'un objet. lorsque j'essaie de l'affecter à saiQuickSearch (le nom de ma comboBox) il me dit "object mismatch"

    Je comprend pas, logiquement, c'est le nom de ma combobox saiQuick Search. Du coup je devrais pouvoir lui affecter des propriété...

    Ou alors ce n'est qu'un alias, et je ne pense pas que c'est possible d'affecter directement les comboBox. puisque je n'ai pas accès aux script pour les comboBox (ce serais trop facile )

    A bientot, Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/11/2009, 09h26
  2. Réponses: 12
    Dernier message: 25/06/2009, 19h08
  3. Réponses: 11
    Dernier message: 04/04/2008, 15h09
  4. Macro pour mettre à jour tous les TCD
    Par kimai81 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/03/2008, 21h55
  5. [Oracle] Mettre en MAJ les caractères spéciaux
    Par Egware dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/03/2006, 18h18

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