begin process at 2010 03 20 20:28:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Control

 > TEXTBOX AUTOCOMPLETE - ZONE DE TEXTE PRÉREMPLISSABLE LORS DE LA SAISIE UTILISATEUR [MODULE DE CLASSE]

TEXTBOX AUTOCOMPLETE - ZONE DE TEXTE PRÉREMPLISSABLE LORS DE LA SAISIE UTILISATEUR [MODULE DE CLASSE]


 Information sur la source

Note :
10 / 10 - par 6 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Control Classé sous :textbox, autocomplete, autocompletition, proposition Niveau :Débutant Date de création :29/10/2008 Date de mise à jour :17/07/2009 07:52:13 Vu / téléchargé :4 883 / 606

Auteur : PCPT

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Le but est simplement de proposer du texte lors de la saisie de l'utilisateur, texte que vous pouvez indiquer par fichier, par paramarray, ou ajouter mot à mot


l'intégration à vos projet est toute simple (cf code ci-dessous)
j'avais besoin de ce "petit code", très étonné de ne trouver aucune source sur VbFrance traitant de ce sujet


comme d'hab en espérant que çà puisse vous servir, j'attends vos retours ;)

Source

  • Option Explicit
  • Private AfCompleteDays As New AfCls_TBAComplete
  • '
  • Private Sub Form_Load()
  • With AfCompleteDays
  • Set .TBox = Txt_Days
  • .FillByParamArray "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"
  • End With
  • End Sub
  • '
  • Private Sub Form_Unload(Cancel As Integer)
  • Set AfCompleteDays = Nothing
  • End Sub
Option Explicit
Private AfCompleteDays As New AfCls_TBAComplete
'
Private Sub Form_Load()
    With AfCompleteDays
        Set .TBox = Txt_Days
        .FillByParamArray "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"
    End With
End Sub
'
Private Sub Form_Unload(Cancel As Integer)
    Set AfCompleteDays = Nothing
End Sub


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 octobre 2008 16:17:21 :
.

 Sources du même auteur

Source avec Zip Source avec une capture PUBLIC SHARED SANS MODULE - VARIABLE SINGLETON : IDENTIFICAT...
Source avec Zip Source avec une capture RÉCUPÉRATION DES IMAGES SYSTÈME DEPUIS LEUR EXTENSION OU LEU...
Source avec Zip Source avec une capture FILE FOLDER LOCKER - BLOQUER (ET DÉBLOQUER) L'ACCÈS À CERTAI...
Source avec Zip Source avec une capture FOLDER HELPER - DOSSIERS SPECIAUX, MANIPULATION DE DOSSIERS,...
Source avec Zip Source avec une capture CRYPTAGE ET DÉCRYPTAGE DE CHAÎNES ET DE FICHIERS [MODULE DE ...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) OUVRIR UNE BASE DE DONNÉES DANS PLUSIEURS DATAGRIDVIEW DANS ... par PHILOUVB
Source .NET (Dotnet) CONTROLS PERSONALISÉ TEXTBOX par rodcobalt22
Source avec une capture Source .NET (Dotnet) CREATION DE CONTROLS DYNAMIQUE + DEPLACEMENT ET REDIMENTION ... par tresorsdevie
Source avec Zip Source avec une capture USERCONTROL AVEC PROPERTIES PERSONALISABLE par Polack77
Source avec Zip Source avec une capture BOUTON UP_DOWN par epson1

 Sources en rapport avec celle ci

Source .NET (Dotnet) CONTROLS PERSONALISÉ TEXTBOX par rodcobalt22
Source avec Zip Source .NET (Dotnet) COMPILATEUR EN VB NET 2003 par alpha5
Source avec Zip Source avec une capture CALCULE HEURES DE NUIT 2 par ocejade
Source .NET (Dotnet) LABEL ET IMAGE DANS TEXTBOX par gillardg
Source avec Zip Source avec une capture CALCUL DES HONORAIRES CAC par gbegerco

Commentaires et avis

Commentaire de Exploreur le 29/10/2008 17:00:19 10/10

Salut,

Comme d'habitude...impécable...simple mais trés utile et éfficace...

Ps : Tu ne pas mettre une Listbox pour.....ok..ok..je sort ^^

++
Exploreur

Commentaire de PCPT le 29/10/2008 20:07:47 administrateur CS

ptit rigolo ^^

merci :p

Commentaire de NISANDSYSTEMS le 29/10/2008 20:13:15 10/10

Bonsoir.
Fallait y passer, c'est fait et bien fait.
Reste plus qu'à élargir les définitions du dictionnaire de mots.
Toujours fidèle au travail bien fait.

@++
Philippe

Commentaire de us_30 le 29/10/2008 22:28:22

Bonsoir à tous,

Juste une petite remarque... en VBA, une combobox (ou listbox) possède la propriété MatchEntry qui mis sur 1 (frmMatchEntryComplete) permet de faire exactement la même chose que cette présentation. Bien sûr, il faudrait peut être bricoler qlq chose pour une textbox...
Maintenant une simple idée... Comme en vb6, cette propriété est absente (pour une combo). Ne pourrait-on pas intégrer et utiliser les contrôles de VBA sous VB6 ?

Sinon, sur le programmation en elle-même, c'est trop propre pour dire autre chose que cela est parfait... Néanmoins, plus structurellement, je me pose la question de savoir, si avec un dictionnaire plus important (env 30 000 mots) si cette programmation serait encore performante en terme de temps de recherche... peut-être qu'il faudrait mettre une stratégie de recherche, plutôt que de passer toutes la liste de mot en revue...

En extension du prog, il faudrait voir comment traiter une vraie saisie dans un traitement de texte. Cela est un peu plus compliqué que pour un simple mot...
De plus, tj en extension, voir une sélection sur les sylables en cas de faute orthographique...

10/10 !

Amicalement,
Us.

Commentaire de us_30 le 29/10/2008 22:31:35 10/10

10/10 ! ... pas pris en compte ! bigre !

Amicalement,
Us.

Commentaire de Charles Racaud le 29/10/2008 23:16:19 10/10

Code simple et commenté, résultat parfait.

Un petit plus : pouvoir naviguer dans la liste avec les touche haut/bas.
__
Kenji

Commentaire de dvlpt le 30/10/2008 10:06:19 10/10

Très bon travail, très propre et bien commenté.
-DVLPT-

Commentaire de neo2k2 le 30/10/2008 10:11:51 10/10

Un tout petit "nice to have":

ajouter le dictionnaire de mots sous forme d'un fichier texte externe...

Commentaire de asimengo le 30/10/2008 11:01:50

Super, j'apprécie la simplicité en passant par une classe, elle permet de résoudre simplement le problème sans ce soucier de la mise en forme du TextBox, évènements et autres.

J'ai un contrôle presque dans le même ordre d'idée avec passage de CommandText et ConnectionString en paramètre (Dans ton cas ce serait un tableau bidimentionnelle). La différence est que sur l'évènement Validation du TextBox, il écrit la description en dessous du textbox. Dans ton cas ta Classe recevrait en paramètre 2 objets, le TextBox et le Label pour la description. Exemple : si le tableau a 3 colonnes et définit(n,1 to 3), dans le TextBox, il mettra l'indice 1 du texte trouvé et dans la description les indices 2 et 3. Tu pourrais rajouter un paramètre pour savoir si la colonne 0 du tableau contient les noms de colonnes afin de rendre plus explicite la description.

Parfait ta source, mais pour quelques lignes de codes en plus, tu as quelque de meilleur.

@Us_30:Ma dernière source sur la décomposition SQL permettrait en effet de pouvoir gérer des listes infinies en affichant un form pour filtrage de la liste.

Commentaire de PCPT le 30/10/2008 14:16:50 administrateur CS

merci à tous, je ne pensais pas que cette petite classe aurait tant de succès ^^


us_30 -> j'ai un doute pour les contrôles VBA... aussi sur l'utilité d'ailleurs :)
et pour un fonctionnement plus "stratégique", ce n'était pas bon besoin (1000 mots grand maximum) mais tu as tout à fait raison, j'explorerai cette piste dès que j'en aurai le temps :p


Charles Racaud -> déplacement dans la collection, pas bête du tout. pas possible dans ces conditions, je regarderai en même temps donc ;)
si possible à double usage dans ce cas : déplacement dans l'ordre de remplissage (historique de messenger par exemple), et déplacement depuis le préfixe tapé.


neo2k2 -> le remplissage par fichier, c'est le cas par la méthode FillByFile


asimengo -> la classe n'a pas à être attachée "de force" à un autre control ou avoir un tableau multidimensionnel
à toi de faire une classe qui va hériter de celle-ci et qui elle aura ton label, ou plus simplement de stocker en propriété le dernier accès à GetLikeItem, ou de passer cette fonction en public, pour ensuite aller lire ton tableaux(retour+1,2 et 3)
effectuer tes modifications enlèverait toute généricité à la classe ;)


merci à tous pour vos commentaires, n'hésitez pas, je ferai au mieux pour répondre à vos attentes

++

Commentaire de us_30 le 31/10/2008 11:15:45

Bonjour à tous,

PCPT,
Je viens d'essayer ce que je disais précédemment. A savoir, utiliser une Combobox issu du VBA... Cela ne pose pas de problème particulier. Les contrôles sont contenus dans FM20.DLL dans Windows>system32 (enfin sous XP) et avec Office 2003... il suffit donc de paramètrer VB6 avec le menu "Références".
Ensuite, à titre d'exemple totalement épuré, on peut voir que le fonctionnement est similaire au code proposé :
- Pour cela mettre une Combobox1, régler MatchEntry sur frmMatchEntryComplete,
- et la remplir...

par exemple :
Private Sub Form_Load()
With ComboBox1
    .AddItem "DEDE"
    .AddItem "DEDIT"
    .AddItem "DODO"
End With
End Sub

Bien sur, je sais bien que tu sais tout ça, mais j'écris cela aussi pour d'autres lecteurs... -:);

Par contre, comme je le disais, il faudrait bricoler qlq chose pour l'appliquer à une Textbox, et là, peut-être que ton code reste encore le meilleur moyen... enfin, c'était qu'une autre piste de réflexion, ou une alternative...

Ceci dit, developper ce principe sur une textbox avec un vrai texte (donc plusieurs mots à la suite), et peut-être avec une liste déroulante à chaque possibilité (à la manière de l'interface IDE de programmation présentant les différentes possibilités) me semble être un principe jamais vu pour un traitement de texte (du moins à ma connaissance)... et me semblerai plus que pratique...

J'avoue que ta source m'a piqué, et me donne envie de faire un truc du même genre...

Amicalement,
Us.

Commentaire de PCPT le 31/10/2008 15:54:11 administrateur CS

salut us_30,

les compo forms2..., je les avais zappé tien, et pour cause : "La Fm20.dll est  non  redistribuable"

http://support.microsoft.com/kb/224305


pour ton exemple avec une combo(box), ceci est aussi plus ou moins faisable avec les compo intrinsèques de VB6.
mettre la combo sur le style 1 (simple), ce qui lui fait ressembler à une textbox, puis à la saisie on a la navigation dans la liste par les flèches directionnelles.
çà rapproche unique l'idée, ce n'est pas non plus ce rendu que je voulais

mon envie était vraiment uniquement de la proposition d'autocomple(ti)tion, pas avec une liste déroulante qui viendrait masquer d'autres composants et qui aurait nécessité un click ou un navigation

mais si mon code t'inspire alors fais-toi plaisir :p
c'est vrai qu'un contrôle type intellisense appelable alors n'importe où, çà peut être très sympa ;)

bon courage
++

Commentaire de us_30 le 31/10/2008 23:30:54

Bonsoir PCPT,

Bien vu ! Je ne savais pas que FM20.DLL cela était non redistribuable...

Néanmoins, l'alternative que j'évoque (donc sous VBA de préférence), nécessite pas de navigation ou de click, et donne en réalité la même chose que ta présentation... Je n'insisterais plus, mais bon...

Maintenant, si je dis qu'on peut aussi le faire sous VB2008... Tu n'en voudras pas... J'explique un peu :
- Mettre une Combobox
- Remplir la collection, dans AutoCompleteCustomSource,
- Mettre AutoCompleteMode sur Append,
- Mettre AutoCompleSource sur CustomSource (bien sur !)

Et suite, à qlq recherches, voici une source sous VB6 qui fait la même chose, mais de manière différente en utilisant une combo... (avec le style=1, comme tu le proposes c'est à s'y tromper...) Voir : http://www.vbfrance.com/codes/COMPLETER-MOT-PENDANT-SAISIE-FONCTION-DONNEES-COMBOBOX_6533.aspx

Enfin, bon, tout ça... N'empêche que faire un type d'intellisense, ou simplement une saisie auto-compléter dans une textbox sur plusieurs mots, serait surement une bonne extension à ta proposition... à méditer...

Amicalement,
Us.

Commentaire de chapata le 03/11/2008 13:34:51

Salut à tous.
Merci pour cette source !
Est'il possible d'ajouter cette fonctionnalité en VBA ? Et quels seraient les changements au niveau du code ? Car j'ai mon form qui est identique, intégrer le module de classe, mais cela ne fonctionne pas. Et je n'ai pas d'erreur d'éxecution ....
Merci

Commentaire de PCPT le 03/11/2008 14:48:10 administrateur CS

salut chapata,




il faut remplacer
Public WithEvents TBox      As TextBox
par
Public WithEvents TBox      As MSForms.TextBox


et remplacer
Private Sub TBox_KeyDown(KeyCode As Integer, Shift As Integer)
par
Private Sub TBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)


çà devrait suffire ;)

Commentaire de chapata le 05/11/2008 13:38:58

Bonjour,
merci pour ta réponse PCPT.
J'ai effectué les changement cités, mais marche pas (suis sous VBA Access) ya des messages d'erreur.
J'ai donc fait des petits tests uniquement sur : AfComplete_Txt ...

Private Sub Form_Load()

Set AfComplete_Txt = New AfCls_TBAComplete
dim AppPath as string

AppPath = "D:\Donnees\programmation\vba\Auto complete"

With AfComplete_Txt
  Set .TBox = text1
  .FillByFile AppPath & "\mots_de_5_lettres.dat"
End With

End Sub

Quand je regarde dans les variables, j'ai bien la collection oColl des mots qui sont biens remplis, le contrôle TBox avec toutes ses propriétées, mais sur l'evenement TBox "OnKeyDown" je n'ai rien, il ne va pas chercher la private sub TBox_KeyDown.
Et je ne sais pas d'ou pourrait provenir le problème ...
Si une personne a réussit ou est calée sur ce point, je lui en serrait très reconnaissant.

PS : j'aime bien ta source, on dirait de l'AJAX, c'est l'éffet voulu :)

ChaPaTa

Commentaire de PCPT le 05/11/2008 18:09:16 administrateur CS

j'fais pas de VBA, encore moins sous access....

le principe étant forcément uniquement les évènements. essaye d'appliquer le code à ton formulaire, il te suffira juste de déplacer au bon endroit ensuite..

au pire fais-moi parvenir une base (cijoint.fr), je peux toujours jeter un oeil

Commentaire de PCPT le 02/10/2009 21:34:46 administrateur CS

... je repassais par là

chapata -> tu avais copié "Private Sub Form_Load()"?
dans ce cas normal, ton userform ne passe pas par cette procédure, il n'y a donc juste aucune instanciation

(le test en pas à pas aurait du te mettre sur la voie)


pour les autres lecteurs -> je n'ai pas retouché cette classe et ne peux le faire pour le moment mais je garde en tête les diverses demandes et propositions

bonne soirée

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

textbox multiligne autocomplete [ par jee0404 ] BOnjour ,         Est-ce qu'on pourrais faire marcher la propriété autocomplete sur un textbox multiligne ? Je sais que ca marche sur un textbox avec Access : Remplir un textbox avec le résultat d'une Requete SQL [ par Mduv ] Je demarre avec access...et visual...Je cherche à remplir un textbox avec le resultat d'une requete sqlQuand j'utilise le code ci-apres il me met une Crée automatiquement un TextBox [ par Markus971 ] Bonjour amis du VB!!Voila je voudrais savoir si il es possible de créer des texbox automatiquement (dans une boucle for)Si quelqu'un aurait une sugges Saisie d'une durée (Time Span) dans une TextBox [ par julien76150 ] Bonjour,J'aimerais saisir une durée (TimeSpan) à l'aide d'une TextBox au format hh:mm:ssPour pouvoir ensuite faire un calcul sur des heures. avec les Textbox, texte pioché dans une cellule [ par kouki69 ] Bonjour,C'est surement très simple mais je ne sais pas comment faire.Voilà, je voudrais que le contenu d'une texte box ( text box 22680) ai comme vale Textbox et copie. [ par antom ] Hello le Forum,J'ai un souci avec une textbox.Je souhaite qu'en fonction du chois de la TexBox, qu'il aille chercher des valeurs corresppondantes et l Imposer un nombre [ par Belag55 ] Bonjour,Dans un formulaire (sous VBA - Excel), je souhaite imposer à l'utilisateur d'entrer dans un textbox un N° à 8 chiffres dont les 2 permiers son VB.Net AutoComplete ?? [ par MagDix ] Salut.... J'ai un "vieux" programme où j'utilise l'AutoComplete avec un Combobox.Cela me permet de me proposé les élément contenu dans mon combobox VBA : problème récupération texte Textbox dynamique [ par Totof86 ] Bonjour Je suis nouveau sur le forum. j'ai pu m'inspirer de plusieurs post. Je vous remercie. J'ai cependant un petit problème en VBA pour récup Petit probleme avec petit programme [ par Bastien88 ] Voila g un petit probleme, je suis debutant en visual studio 2005 et j'ai un programme a faire, tout simple mais qui me pose deja des probleme:C'est u


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales