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

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    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
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2007
    Messages : 117
    Points : 133
    Points
    133
    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 averti
    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
    Points : 364
    Points
    364
    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
    Points : 5 537
    Points
    5 537
    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
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    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 averti
    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
    Points : 364
    Points
    364
    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
    Points : 5 537
    Points
    5 537
    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

  8. #8
    Membre averti
    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
    Points : 364
    Points
    364
    Par défaut
    Ouais justement, je venais de faire un edit de mon post à ce sujet.
    Je dirais que ce n'est pas mon problème mais celui de moilou2

  9. #9
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re les gars!

    Je suis tout à fait d'accord avec votre théorie, mais ce n'est pas non plus une lettre officiel ou autre.

    Il s'agit donc d'un historique des pannes, et moi à la relecture, je voudrais juste que al phrase commence par une majuscule, que le reste soit en minuscule, et que les marques des machines sur lesquel ils interviennet apparaisse en MAJSUCULE pour que sa intérpel mon Oeil!

    Après si de temps à autre il y a une méentente ce n'est pa snon plus une affaire d'état!

    Merci pour votre aide, je vais tester la solution de NEUPONT, et au pire peut être garde l'insertion direct dabs le code, parce que j'ai fai une petite liste et je n'ai pas non plus 1000 mots mais peut être une 20ène...

    Voila merci les gars

  10. #10
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Dans tout ça...on a pas encore parlé des fautes de frappes

    Comment gérer EUROSIGMA ou EUROSIKMA ou EUROSIMA ou EUROCICMA ou ...

  11. #11
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut


    C'est vrai sa vasi propose nous quelque chose!

  12. #12
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par moilou2 Voir le message
    C'est vrai sa vasi propose nous quelque chose!
    non parce que ça va demander la déforestation de la moitié de la forêt amazonienne pour construire cette usine à gaz...

    Pour moi cela n'est pas gérable avec Excel, ne perdons pas de vue que c'est quand même un programme de calcul à la base, pas un traitement de texte.

    Je ne vois pas comment on peut gérer cette saisie ci par exemple :
    por te --> j'ai voulu écrire pour te ou porte ?

    Il est possible de contrôler la saisie de certains mots bien précis dans une TextBox à partir du moment où cette TextBox ne contient que ce mot mais lorsque ce mot est inclus dans une phrase alléatoire...ça va demander un traitement hyper lourd, il va falloir vérifier pour chaque mot, si celui ci est dans la base de données ou pourrait ressembler à un des mots de la base de données et...jusqu'où pousser la ressemblance ?

    Je sais que je ne fais que répéter ce que t'a dit mon ami UC et je ne peux qu'abonder dans son sens. (pour 1x qu'on est d'accord )
    .

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