begin process at 2012 02 17 10:34:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Format personnel dans un textbox.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Format personnel dans un textbox.

samedi 4 juillet 2009 à 11:06:32 | Format personnel dans un textbox.

sancho12345

Bonjour à tous,

 

Une petite question au niveau des formats en VB :

 

Est-il possible d'imposer un format personnel dans un textbox et d'autoriser le passage à un autre textbox  uniquement si le format est respecté.

 

Exemple de format :  teddy.aa-123   (xxxx.aa-numérique ) 

 

xxxx : Peu le nombre de lettre.

aa : peu avoir la forme aa, bb ,ba

numérique :Après de trait c'est uniquement et toujours une valeur numérique sans limite.

 

Merci de votre aide.

 

 

samedi 4 juillet 2009 à 11:48:20 | Re : Format personnel dans un textbox.

PCPT

Administrateur CodeS-SourceS
salut,

pas directement, il faut utiliser un maskedit, avec le masque de ton choix
ce contrôle est distribuable est la msdn locale indique comment l'utiliser (F1 donc)

++


samedi 4 juillet 2009 à 13:23:51 | Re : Format personnel dans un textbox.

sancho12345

Salut et merci pour ta réponse,

 

J'ai effectivement lu dans le MSDN des explications relatives au maskedit,  mais je ne sais pas par quoi commencer ?


Peux-tu m'éclairer un peu plus.
 

Merci

 

++

samedi 4 juillet 2009 à 14:24:01 | Re : Format personnel dans un textbox.

PCPT

Administrateur CodeS-SourceS
... mais tout est indiqué, y'a juste à suivre les instructions




Mask, propriété

Mask, propriété

       

Détermine quel masque de saisie est utilisé pour le contrôle.

Syntaxe

[form.]MaskEdBox.Mask [ = string$]

Remarques

Vous pouvez définir des masques de saisie au moment de la création et de l'exécution. Cependant, les exemples suivants présentent des masques d'entrée standard à utiliser au moment de la création. Le contrôle peut faire la distinction entre les caractères numériques et alphabétiques pour la validation, mais ne peut pas vérifier la validité du contenu, notamment pour la saisie du mois ou de l'heure.

Masque Description
Chaîne vide (Valeur par défaut) Aucun masque. Agit comme une zone de texte standard.
##-???-## Date, réduit (France). Par exemple : 20-mai-92
##-##-## Date, abrégé (France). Par exemple : 20/05/1992.
##:## ?? Heure, réduit. Par exemple : 05:36 A.M.
##:## Heure, abrégé. Par exemple : 17:23.

Le masque de saisie peut être constitué des caractères suivants.

Caractère du masque Description
# Espace réservé à un chiffre.
. Espace réservé aux décimales. Le caractère effectivement utilisé n'est autre que celui spécifié comme espace réservé aux décimales dans les paramètres applicables dans votre pays. Ce caractère est traité comme un littéral dans un masque de saisie.
, Séparateur des milliers. Le caractère effectivement utilisé n'est autre que celui spécifié comme séparateur des milliers dans les paramètres applicables dans votre pays. Ce caractère est traité comme un littéral dans un masque de saisie.
: Séparateur d'heure. Le caractère effectivement utilisé n'est autre que celui spécifié comme séparateur d'heure dans les paramètres applicables dans votre pays. Ce caractère est traité comme un littéral dans un masque de saisie.
/ Séparateur de date. Le caractère effectivement utilisé n'est autre que celui spécifié comme séparateur de date dans les paramètres applicables dans votre pays. Ce caractère est traité comme un littéral dans un masque de saisie.
\ Le caractère qui suit dans la chaîne du masque est traité comme un littéral. Vous pouvez ainsi spécifier les caractères ' # ', ' & ', ' A ' et ' ? ' dans le masque. Ce caractère est traité comme un littéral dans un masque de saisie.
& Espace réservé à un caractère. Les valeurs valides de cet espace réservé correspondent aux caractères ANSI compris dans les plages suivantes : 32-126 et 128-255.
> Convertit tous les caractères placés après en majuscule.
< Convertit tous les caractères placés après en minuscule.
A Espace réservé à un caractère alphanumérique. Par exemple : a - z, A - Z ou 0 - 9.
a Espace réservé à un caractère alphanumérique (entrée facultative)
9 Espace réservé de chiffre (entrée facultative). Par exemple : 0 - 9.
C Espace réservé de caractère ou d'espace (entrée facultative). Fonctionne exactement comme l'espace réservé & et assure la compatibilité avec Microsoft Access.
? Espace réservé à une lettre. Par exemple : a - z ou A - Z.
Literal Tous les autres symboles sont affichés comme littéraux, c'est-à-dire tels quels.




on peut donc faire un mask de ce type :
????.??-##########

après c'est bonus...., on peut empêcher de coller du texte, et vérifier lors de la saisie pour ton AB



Private Sub  MaskEdBox1_KeyPress(KeyAscii  As Integer )
'   empêche de coller
    If (KeyAscii = 22Then
        KeyAscii = 0
    Else
'       empêche saisie différente de aa ab ba bb
        If (MaskEdBox1.SelStart = 5Or (MaskEdBox1.SelStart = 6) Then
            Dim As String
            s = Chr$(KeyAscii)
            If Not ((s = "a"Or (s = "b")) Then KeyAscii = 0
        End If
    End If
End Sub

Coloration VB6, VBA, VBS



NB : comme tu peux le voir, avec un masque on est néanmoins bloqué par une taille maximum. tu peux ajouter des
# si nécessaires

++

samedi 4 juillet 2009 à 15:25:00 | Re : Format personnel dans un textbox.

sancho12345

Salut,

 

En tout cas c'est complet.

 

Je vais d'expliquer exactement ce que je veux faire avant de me lancer dans des modifs et dit moi si tu aurais fais de cette manière.

 

Voici le code qui permet de chercher dans une base Access des noms déjà renter  +  ta modif

 afin éviter de prendre en compte tout ce qui est après le signe-.

 

Le problème c'est qu'il accepte de mettre en mémoire même les mots qu'il n'y a pas dans la base.

Exemple : dans la base j'ai teddy.ba-123

Si je tape dans txt_nom_produit.Text :  tedd  il l'accepte et le mets dans une autre base.

 

J'aimerais accepter uniquement mettre en mémoire les noms qui sont dans la base avec l'orthographe précis mais avec des chiffres différents après le signes - .

 

Qu'en penses-tu ?

 

Dit moi si cette la méthode que tu aurais employé.

sql_tout_les_noms = "SELECT * FROM tempsetnoms WHERE reference_pdt LIKE '" & getSqlLike(txt_nom_produit.Text, False) & "' ORDER BY reference_pdt;"

  Call recherchetempsetnoms(sql_tout_les_noms)

 

Merci pour ton aide

++ 

------------------------------------------------------------------------------------------------------

Private Function getSqlLike(ByVal sText As String, Optional bFirst As Boolean = False) As String

    Dim iPos As Integer

'   cherche le - et nettoie si trouvé
    iPos = InStr(1, sText, "-")
    If iPos Then sText = Left$(sText, iPos)

'   première ou toutes les lettres
    If bFirst Then sText = Left$(sText, 1)

'   renvoie avec %
    getSqlLike = sText & "%"

End Function

 

***********************************************

 

Private Sub txt_nom_produit_Change()

 

' requete qui permet d'afficher en fonction de la premiere lettre les produits commençant par cette lettre

sql_tout_les_noms = "SELECT * FROM tempsetnoms WHERE reference_pdt LIKE '" & getSqlLike(txt_nom_produit.Text, False) & "' ORDER BY reference_pdt;"

 

  Call recherchetempsetnoms(sql_tout_les_noms)

End Sub

Function recherchetempsetnoms(requete_sql As String)

On Error Resume Next

 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' connexion à la base de données

'objet de connexion

Set cnx = New ADODB.Connection

Set rst = New ADODB.Recordset

'Définition du pilote de connexion

cnx.Provider = "Microsoft.Jet.Oledb.4.0"

'Définition de la chaîne de connexion

cnx.ConnectionString = "baseproduits.mdb"

'Ouverture de la base de données

cnx.Open

 

rst.Open requete_sql, cnx

'affichage des enregistrements

i = 0

 

If rst.EOF = True Then

MsgBox " Il n'y a aucun produit dans la base ACCESS, portant cette référence. Vous devez mettre la base à jour. Dans la base Access nommée baseproduits, la table porte le nom Tempsetnoms.", vbOKOnly + vbInformation, "Erreur"""

Else

form_ajout_produit.ListBox1.Clear

rst.MoveFirst

While Not (rst.EOF)

form_ajout_produit.ListBox1.AddItem rst("reference_pdt")                       form_ajout_produit.ListBox1.List(i, 1) = rst("noms_pdt")                                              quantite" = colonne 2 de la base

form_ajout_produit.Text1 = rst("duree_pdt")              

rst.MoveNext

Wend

End If

rst.Close

End Function

 *********************************************************

 

 

 

samedi 4 juillet 2009 à 15:44:05 | Re : Format personnel dans un textbox.

PCPT

Administrateur CodeS-SourceS
Le problème c'est qu'il accepte de mettre en mémoire même les mots qu'il n'y a pas dans la base
*c'est ton code, quelle partie accepte quoi?
*en mémoire de quoi?....



Si je tape dans txt_nom_produit.Text :  tedd  il l'accepte et le mets dans une autre base
*pourquoi tu tape dans une txtbox, on vient de faire avec une editbox
*il accepte.... qui accepte, je ne vois aucun code qui vérifie quoi que ce soit en rapport à la maskedit qui ne serait pas complète
*je ne vois aucun code d'ajout en base, juste un SELECT



J'aimerais accepter uniquement mettre en mémoire les noms qui sont dans la base avec l'orthographe précis mais avec des chiffres différents après le signes -
*en mémoire de quoi?!!
*le texte exact... c'est déjà le cas avec la fonction
getSqlLike


Dit moi si cette la méthode que tu aurais employé.
sql_tout_les_noms = "SELECT * FROM tempsetnoms WHERE reference_pdt LIKE '" & getSqlLike(txt_nom_produit.Tex
t(...)

*où est la maskeditbox ?




comme tu le vois, ta question est incompréhensible. pour moi en tout cas



samedi 4 juillet 2009 à 16:33:52 | Re : Format personnel dans un textbox.

sancho12345

Salut,

 

Je vais essayer d'après plus clair.

 

 

J'ai une base Access avec comme table tempsetnoms dans laquelle et déjà entrée  des noms de produits pour être précis

 J'ai ajouté à mon code ta modif qui permet de ne plus prendre en compte les chiffre après le signe -.

Tout cela fonctionne trés bien.

 

Mais voila si par exemple  dans la base Access  tempsetnoms j'ai comme nom  teddy.ba-123 Et  que je tape dans txt_nom_produit.Text :  tedd  il l'accepte et le mes dans une autre base(dont les lignes ne figure pas dans cité si dessus).

Mais voila

------------------------------------------------------------------------------------------------

Private Sub cmd_ajouter_Click()

' connexion à la base de données

Set cnx = New ADODB.Connection

'objet de connexion

Set rst = New ADODB.Recordset

'Définition du pilote de connexion

cnx.Provider = "Microsoft.Jet.Oledb.4.0"

'Définition de la chaîne de connexion

cnx.ConnectionString = "baseproduits.mdb"

'Ouverture de la base de données

cnx.Open

Dim requete As String

requete = " SELECT nom_pdt FROM stock"

rst.Open requete, cnx

'affichage des enregistrements

If rst.EOF = True Then

Else

 

'test si le produit existe déja dans la base ( si oui aller à fin: )

rst.MoveFirst

While Not (rst.EOF)

If txt_nom_produit.Text = rst("nom_pdt") Then

MsgBox "Ce produit existe déja dans la liste , pour ajouter une quantité de ce produit au stock , utiliser l'option Ajouter Quantité au menu principal .", vbInformation + vbOKOnly, "Produit existant"

GoTo fin

End If

rst.MoveNext

Wend

 

rst.Close

 

cnx.Close

 

End If

 

txt_date_stock = DTPickerstock.Value        'la valeur recuperée par DTPickerstock.Value = txt_date_stock

 

' verification des champs

If form_ajout_produit.txt_nom_produit = "" Or form_ajout_produit.txt_quantite = "" Or form_ajout_produit.txt_date_stock = "" Then

MsgBox "Les champs que vous avez laissé vides sont obligatoires ", vbOKCancel + vbInformation, "Erreur"

Else

 

 

txt_date_stock = DateAdd("M", (Text1), (txt_date_stock)) ' ajouter à la date insrite dans txt_date_stock la valeur de text1 en nombre de mois

date_mnt = Date                 'Date du jour de l'entrée

date_choisie = txt_date_stock          'Date d'expiration entrée à la main, date choisie c'est la date qui va entrée dans la base

 

 

 

sql_insert = "INSERT INTO stock(nom_pdt,quantite,date_expiration,date_entree) values(""" & txt_nom_produit & """ , """ & txt_quantite & """ , """ & date_choisie & """ , """ & date_mnt & """ ) "

 

' appel de la fonction qui va ajouter le produit

 

Call Form1.supprimer_modifier_produit_ajouter(sql_insert)

' si on veut quitter ou ajouter un autre produit

choix = MsgBox("Opération effectuée , voulez vous ajoutez un autre produit ?", vbQuestion + vbYesNo, "Confirmation")

If choix = vbYes Then

txt_nom_produit = ""

txt_quantite = ""

Else

Unload Me

End If

 

End If

 

fin:

 

End Sub

-------------------------------------------------------------------------------------------

 

J'aimerais uniquement mettre en mémoire les noms que j'ai  dans la base Access avec comme table tempsetnoms avec l'orthographe précis mais avec des chiffres différents après le signes - , sinon refuser.

 

Suis-je précis ?

 

 

Dit moi si cette la méthode est la bonne.

sql_tout_les_noms = "SELECT * FROM tempsetnoms WHERE reference_pdt LIKE '" & getSqlLike(txt_nom_produit.Text, False) & "' ORDER BY reference_pdt;"

  Call recherchetempsetnoms(sql_tout_les_noms)

 

Merci  

 

samedi 4 juillet 2009 à 17:06:45 | Re : Format personnel dans un textbox.

PCPT

Administrateur CodeS-SourceS
fais une trace stp
c'est à dire exemple de ce qu'il y a (comme produits, existants)
ce qui peut être tapé, et ce que tu veux comme action selon ce qui est tapé

ex :

produits existants :
teddy.ab-123
teddy.ab-456
teddy.bb


produit saisi :
teddy => refuser car il y a déjà des noms commençant par teddy
teddy.ab-987 => refuser
car il y a déjà des noms commençant par teddy.ab-
teddy.ab-987 => accepter car il y a bien des noms commençant par teddy.ab- et que le numéro est différent
etc...

soit le plus précis possible, et essaye d'utiliser les bons termes (je ne vois toujours pas ton utilisation "en mémoire")

samedi 4 juillet 2009 à 18:17:06 | Re : Format personnel dans un textbox.

sancho12345

Très bien je vais essayer.

 

c'est à dire exemple de ce qu'il y a (comme produits, existants dans la base Access)  :

 

Teddy.ab-xxxx    Après le tiret peu importe car il ne prend pas en compte ce qu'il y a après.

Teddy.bb-xxxx  

 

 Ces 2 produits sont existants dans la base.


ce qui peut être tapé, et ce que tu veux comme action selon ce qui est tapé
 :

 

je voudrais pouvoir tapé uniquement tous les produits qui sont dans la base ACCESS.

 

Par exemple si je tape Teddy.ab- dans le txt_nom_produit je voudrais qu'à la fin de l'écriture complète du produit  donc Teddy.ab- ( donc au tiret) , ouvrir un autre Form( mais ça je peux gérer ), mais uniquement à la fin du produit complet.

 

Le problème actuellement c'est que j'ai utilisé une requête avec search

--------------------------------------------------------

sql_tout_les_noms = "SELECT * FROM tempsetnoms WHERE reference_pdt LIKE '" & getSqlLike(txt_nom_produit.Text, False) & "' ORDER BY reference_pdt;"

  Call recherchetempsetnoms(sql_tout_les_noms)

-------------------------------------------------------

 et lorsque je  tape les 2 premières lettre de Teddy.ab-  donc Te,  il n'y a pas d'erreur car il y a bien  dans la base un produit  commençant par Te (c'est Teddy.ba-) mais le problème c'est qu'au final  cela ne correspond à aucun produit car le nom n'est pas complet.

 

D'où l'importance pour moi d'avoir une saisie complète du mon précis Teddy.ab- ( jusqu'au tiret) avant de pouvoir  continuer.

 

Merci

 

++

samedi 4 juillet 2009 à 18:39:43 | Re : Format personnel dans un textbox.

PCPT

Administrateur CodeS-SourceS
    Dim sValue As String
    sValue = Replace(MaskEdBox1.Text, "_", vbNullString)
    sValue = Replace(sValue, "#", vbNullString)
    If Len(sValue) < 8 Then MsgBox "DEMANDE INCOMPLETE"


1 2

Cette discussion est classée dans : textbox, format, numérique, personnel, aa


Répondre à ce message

Sujets en rapport avec ce message

preformater une textbox au format jj/mm/aa [ par gotham1 ] pour faire apparaitre dans ma textbox le format jj/mm/aa que faut il faire..????? pour que les / reste constament et pour que l'utilisateur puisse tap Format de date [ par Nike43 ] Je fait une requête à ma BD access me ramenant mes dates mais celle-ci me viennent avec l'année en aa et je la voudrait en aaaa. Comment faire? Je sai Conversion format de nombre [ par Iliona67 ] Bonjour, Encore novice en matière de VB, je bloque sur une chose :Sur certaine feuilles, j'ai des éléments TextBox et Label qui font directement référ SetFocus [ par PFourrey ] Bonsoir à tous. Je débute en VBA et j'ai quelques souci.Pour me faire la main, j'ai voulu faire une petite calculatrice. J'ai un TextBox ou s'affiche aide [ par leguiben ] je suis au tout debut de ma formation en vb et je voudrai conaitre comment on fait pour attribuer à un textbox un format specifique; par exemple si l' format d'un textbox : préfixe téléphonique [ par FASH ] Bonjour à tous, J'ai ,dans VB6, un textbox et je voudrais mettre un format en fonction des préfixes téléphoniques. J'ai une table access où sont logé Format des nombres [ par m2rtech ] Bonsoir, Mon problème concerne le format monaitaire.Afin de rendre lisible une valeur monaitaire dans un textbox, j'écrit souvent :txtMtHT = Format(Mt datagridview format numérique [ par DJMCG ] Bonjour,Après moultes recherches, je viens solliciter votre aide et je doit bien avouer que j'ai posé cette question a bien des endroit sans succès a Problème de format pour un calcul de 2 textbox [ par vicelow5901 ] Bonjour,j'ai un petit problème qui parait assez bête mais que je n'arrive pas résoudre. Je vous mets dabord mon code et je vous explique ensuite :     Passage entre Champ numérique et Textbox d'un formulaire [ par pasmar250659 ] Bonjours,Je travail sur une table access ayant principalement des champs de Type DoubleEtant novice en .net - je passe de VB5 sans adoJe me pose une q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 2,153 sec (4)

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