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 :

Reconnaisance de caractère dans une TextBox avec bibliothèque de mot


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut Reconnaisance de caractère dans une TextBox avec bibliothèque de mot
    Bonjour, j'ai un formulaire, dans lequel j'ai une txtBox. Le problème qui se posé avant, c'est que les utilisateurs écivaient un peu n'importe comment des MAJUSCULES, des minscules... Sans aucune règle.

    J'ai donc forcé à l'aide de code vba L'utilisation de la majuscule en début de phrase, et après chaque point. Et tout le reste en minuscule, afin d'avoir une meuilleur lisibilité lors de la relecture.

    Mais je me suis aperçu que certains mots revenaient toujours en MAJUCULE auparavant, mais maintenant ils ne peuvent plus les mettre.

    Mon idée était donc d'enregistrait tout ces mots dans une sorte de biblioteque, et ainsi, dès que les utilisateurs inscriveront un mot faisant partie de cette bibliotheque, ce dernier se mettrait directement en MAJUSCULE.

    Comme sa au fur et à mesure du temps je vais enrichir cette petite bibliothèque!!!

    Si quelqu'un à une idée de la démarche à suivre, je suis preneur!

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2007
    Messages : 117
    Par défaut
    Bonjour,

    avec un "find" cela devrait aller si tes mots sont delimiter par un "." mais bon se serai plus simple si tu mets le code qui gére ça dans ton message,
    en plus c'est interessant comme démarche,

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    J'ai testé ça sur un textbox, ça a l'air de bien marcher.
    Evidemment il te faudrait boucler sur tous les mots de ton dictionnaire, et adapter, mais le principe peut convenir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TextBox1_Change()
    TextBox1.Text = Replace(TextBox1.Text, "maman", "PAPA", , , 1)
    End Sub

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, moilou2,

    tout est certes réalisable, mais là, vois-tu, la frappe d'un mot n'est pas connue avant qu'elle ne se termine (par un point, un espace, etc...), ce qui imposerait d'énormes lourdeurs de ton application... (nécessité d'analyser ce qui précède, jusqu'à un caractère antérieur, tel un espace, une virgule, un pont, etc..., chaque fois que l'utilisateur "termine" un mot également par un espace, une virgule, un point, etc...


    et je passe sur l'utilisation éventuelle du tiret !

    Conclusion, moilou2 ? celle d'un proverbe, à savoir "Qui trop embrasse mal étreint" ...
    La preuve ?
    Comment ferais-tu donc la différence entre la frappe de "je suis passé par la porte" et "j'ai rencontré mon ami PORTE" ? hein ?
    Il me semble bien t'avoir déjà exposé, dans ton autre discussion, certains aspects relatifs à la rédaction... et ... à son contexte, non ?

  5. #5
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Mais il n'y a aucun rapport...

    Moi c'est des marques de machines que je souhaite mettre en majuscule!

    Et je crains qu'un utilisateur est un copain qui s'appelle "EUROSICMA"...

    Non mais la solution de "neupont", ne me parrait pas inintéresssante!

    Dommage que tout les mots se placent dans le code et non dans un feuille EXCEL ou je ne sais pas où, mais après ce n'est pas une base de données, c'est un classeur et sa c'est vrai qu'il ne faut pas l'oublier.

    En revanche moi je m'en fou que sa soit lettre par lettre! Du moment que quand le mot sera écrit il se mette en majuscule.

    Par contre ce qui serait intéressant de tester, serai de ne pas mettre en majuscule si il n'y a pas d'espace avant le mot qui a été reconnu!

    Je m'explique, par exemple, imaginons (même si ce n'est pas la réalité) j'ai une marque qui s'appelle "EVAL", je ne voudrais pas que si le mot cheval est par exemple écrit, on retrouve dans la phrase chEVAL, c'est pourquoi il serait intéressant de faire le test "Met en majuscule les mots de la bibliothèque, que si il y a un espace avant"

    La "EVAL" étant précédé de "ch", on devrais retrouver le mot "cheval"

    Merci pour votre aide!

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Rien n'empêche d'avoir la liste des mots dans une feuille, ni de traiter l'espace avant le mot.
    Un exemple, imagine que tu as la liste des mots à mettre en majuscules en feuil2, colonne A.
    Tu pourrais avoir un code qui ressemble à ça (pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub TextBox1_Change()
    i = 1
    do while sheets(2).cells(i,1) <> ""
      varMot = sheets(2).cells(i,1)
      TextBox1.Text = Replace(TextBox1.Text, " " & varMot, " " & ucase(varMot), , , 1)
      i = i+1
    loop
    End Sub
    S'il y a beaucoup de mots dans ton dictionnaire ça risque de ralentir la frappe, il vaudra alors peut-être mieux mettre ce code sur l'événement "exit" plutôt que "change" de la Textbox1.

    Edit : ça ne résoudra pas le problème des mots qui commencent par ton entrée, comme EVALuation dans ton exemple, mais là tu retombes dans les limites de ce genre d'exercice évoquées par ucfoutu.

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, neupont,

    Maintenant : dis-nous comment tu traiterais cette phrase, à l'exit, si tu as mis le mot français ==>> Français dans ta base :

    "En Français que je suis, c'est en français que je m'exprime"
    Et ce n'est là qu'un exemple simple, parmi des milliers d'autres

Discussions similaires

  1. Nombre de caractères dans une textbox
    Par Stefounette dans le forum JavaFX
    Réponses: 10
    Dernier message: 27/04/2010, 11h00
  2. Detecter ecriture dans une textBox avec Timer
    Par Shargat dans le forum ASP.NET
    Réponses: 10
    Dernier message: 23/04/2009, 14h13
  3. Réponses: 2
    Dernier message: 06/05/2008, 10h52
  4. Ajouter des caractéres dans une textbox
    Par l3xki dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/02/2008, 14h18
  5. [VB 2005] Enlever certains caractères dans une textbox
    Par BluesMusic dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/01/2008, 14h14

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