Interdire le texte dans un champs

Interdire le texte dans un champs - VB/VBA/VBS - Programmation

Marsh Posté le 05-10-2005 à 17:07:19    

Bonjour,
Je débute la sous visual basic 6.
Je voudrais interdire la saisie de lettre et ne laisser que la saisie de chiffres possible dans une case...
Comment peut on réaliser cette fonction ?
Merci d'avance

Reply

Marsh Posté le 05-10-2005 à 17:07:19   

Reply

Marsh Posté le 05-10-2005 à 17:25:07    

TopFrunix a écrit :

Bonjour,
Je débute la sous visual basic 6.
Je voudrais interdire la saisie de lettre et ne laisser que la saisie de chiffres possible dans une case...
Comment peut on réaliser cette fonction ?
Merci d'avance


 
Utilise la fonction "Validation" que tu trouveras dans le menu "Data" -> "Validation".
Sélectionne le critère "Permettre" dont la valeur sera "Nombre Entier" ou "Decimal"
 

Reply

Marsh Posté le 05-10-2005 à 17:32:39    

je n'ai pas le menu "data"
Pour les menu j'ai "fichier" "edition" "affichage" "projet" "format" "debogage" "execution" "requete" "schema" "outils" "complements" "fenetre" "?"
Je n'ai pas trouvé "valisation" dans ces menus...
Tu peux me re-expliquer ?

Reply

Marsh Posté le 05-10-2005 à 19:57:56    

TopFrunix a écrit :

je n'ai pas le menu "data"
Pour les menu j'ai "fichier" "edition" "affichage" "projet" "format" "debogage" "execution" "requete" "schema" "outils" "complements" "fenetre" "?"
Je n'ai pas trouvé "valisation" dans ces menus...
Tu peux me re-expliquer ?


 
Dans XL pas dans visual basic .... puis si tu veux tu l'enregistre comme nouvelle macro et tu l'utilise après  

Reply

Marsh Posté le 05-10-2005 à 20:30:53    

Comment tu fais exactement ?
J'ai trouvé la boite de dialogue, j'ai mis "decimal" avec un minimum à "0".
Le code fonctionne bien dans la case XL, apres tu le met comment dans VB ?
Si tu peux detailler car c'est la premiere fois que je fais cette anip'.

Reply

Marsh Posté le 05-10-2005 à 21:01:57    

TopFrunix a écrit :

Comment tu fais exactement ?
J'ai trouvé la boite de dialogue, j'ai mis "decimal" avec un minimum à "0".
Le code fonctionne bien dans la case XL, apres tu le met comment dans VB ?
Si tu peux detailler car c'est la premiere fois que je fais cette anip'.


 
Tu fais menu "Outils" -> "Macro" -> "Nouvelle Macro ...", puis "OK"
Tu fais alors la manipulation que je t'ai donnée précédemment puis tu clicque sur le bouton arrêt (le carré sur la barre d'outils)
tu vas and VB et tu regardes dans le module "module1", tu y veras la macro enregistrée.

Reply

Marsh Posté le 05-10-2005 à 21:12:31    

En fait voila mon programme.
 
 
Option Explicit
Private prix As Single
Private CoefForfait As Single
Private CoefReduc As Single
Private TVA As Single
 
 
Private Sub CheckForfait_Click()
If CheckForfait.Value = 0 Then FrameForfait.Enabled = False
If CheckForfait.Value = 1 Then FrameForfait.Enabled = True
calcul
 
End Sub
 
Private Sub CheckReduction_Click()
If CheckReduction.Value = 0 Then FrameReduction.Enabled = False
If CheckReduction.Value = 1 Then FrameReduction.Enabled = True
calcul
 
End Sub
 
 
Private Sub Form_Load()
prix = 1.2
TVA = 0.804
 calcul
TextHt.Text = Val(TxtTtc.Text) * TVA
End Sub
 
Private Sub calcul()
 
 'prix normal
 If CheckForfait.Value = 0 And CheckReduction.Value = 0 Then TxtTtc.Text = Val(TextTicket.Text) * prix
 'prix we
 If CheckForfait.Value = 1 And CheckReduction.Value = 0 And TxtWe.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.3 * 2
 
 'prix decouverte
 If CheckForfait.Value = 1 And CheckReduction.Value = 0 And TxtDecouverte.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.5 * 7
 
 'reduction 30%
 If CheckForfait.Value = 0 And CheckReduction.Value = 1 And Txt30.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.7
 
 'reduction 50%
 If CheckForfait.Value = 0 And CheckReduction.Value = 1 And Txt50.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.5
 
 'reduction 75%
 If CheckForfait.Value = 0 And CheckReduction.Value = 1 And Txt75.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.25
 
 'Reduction 30 et forfait WE
 If CheckForfait.Value = 1 And TxtWe.Value = True And CheckReduction.Value = 1 And Txt30.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.7 * 0.3 * 2
 
 'Reduction 50 et forfait WE
 If CheckForfait.Value = 1 And TxtWe.Value = True And CheckReduction.Value = 1 And Txt50.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.5 * 0.3 * 2
 
 'Reduction 70 et forfait WE
 If CheckForfait.Value = 1 And TxtWe.Value = True And CheckReduction.Value = 1 And Txt75.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.25 * 0.3 * 2
 
 'Reduction 30 et forfait decouverte
 If CheckForfait.Value = 1 And TxtDecouverte.Value = True And CheckReduction.Value = 1 And Txt30.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.7 * 0.5 * 7
 
 'Reduction 50 et forfait decouverte
 If CheckForfait.Value = 1 And TxtDecouverte.Value = True And CheckReduction.Value = 1 And Txt50.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.5 * 0.5 * 7
 
 'Reduction 70 et forfait decouverte
 If CheckForfait.Value = 1 And TxtDecouverte.Value = True And CheckReduction.Value = 1 And Txt75.Value = True Then TxtTtc.Text = Val(TextTicket.Text) * prix * 0.25 * 0.5 * 7
 
End Sub
 
 
Private Sub TextTicket_Change()
 
calcul
TextHt.Text = Val(TxtTtc.Text) * TVA
Macrovb
End Sub
 
Private Sub Txt30_Click()
calcul
 
End Sub
 
 
Private Sub Txt50_Click()
calcul
 
End Sub
 
Private Sub Txt75_Click()
calcul
 
End Sub
 
Private Sub TxtDecouverte_Click()
calcul
 
End Sub
 
Private Sub TxtTtc_Change()
TextHt.Text = Val(TxtTtc.Text) * TVA
End Sub
 
Private Sub TxtWe_Click()
calcul
TextHt.Text = Val(TxtTtc.Text) * TVA
End Sub
 
Sub Macrovb()
'
' Macrovb Macro
' Macro enregistrée le 05/10/2005
'
 
'
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _
        :=xlGreater, Formula1:="0"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Donnée non valide"
        .InputMessage = ""
        .ErrorMessage = "Veuillez entrer des chiffres !"
        .ShowInput = True
        .ShowError = True
    End With
End Sub

 
En bleu il y a le code issu de XL, j'aimerai qu'il s'applique à une case qui se nomme "TextTicket.Text".
Si tu sais faire la correction je suis preneur. Pour le moment j'ai juste fait un copié/collé du code que je voulais (macro XL) dans monprogramme.


Message édité par TopFrunix le 05-10-2005 à 21:13:45
Reply

Marsh Posté le 05-10-2005 à 22:32:10    

With TextTicket.Text  
       

Reply

Marsh Posté le 05-10-2005 à 23:18:01    

J'ai un message d'erreur lors de l'execution du programme...
"erreur de compilation :
L'objet with doit etre de type defini par l'utilisateur, Object ou Variant"
Qu'est-ce que je dois changer ?
 
 
 
J'ai juste changer le code par :
Sub Macrovb()  
'  
' Macrovb Macro  
' Macro enregistrée le 05/10/2005  
'  
 
'  
    With TextTicket.Text  
        .Delete  
        .Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _  
        :=xlGreater, Formula1:="0"  
        .IgnoreBlank = True  
        .InCellDropdown = True  
        .InputTitle = ""  
        .ErrorTitle = "Donnée non valide"  
        .InputMessage = ""  
        .ErrorMessage = "Veuillez entrer des chiffres !"  
        .ShowInput = True  
        .ShowError = True  
    End With  
End Sub

Message cité 1 fois
Message édité par TopFrunix le 05-10-2005 à 23:19:18
Reply

Marsh Posté le 06-10-2005 à 09:16:40    

TopFrunix a écrit :

J'ai un message d'erreur lors de l'execution du programme...
"erreur de compilation :
L'objet with doit etre de type defini par l'utilisateur, Object ou Variant"
Qu'est-ce que je dois changer ?
 
 
 
J'ai juste changer le code par :
Sub Macrovb()  
'  
' Macrovb Macro  
' Macro enregistrée le 05/10/2005  
'  
 
'  
    With TextTicket.Text  
        .Delete  
        .Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _  
        :=xlGreater, Formula1:="0"  
        .IgnoreBlank = True  
        .InCellDropdown = True  
        .InputTitle = ""  
        .ErrorTitle = "Donnée non valide"  
        .InputMessage = ""  
        .ErrorMessage = "Veuillez entrer des chiffres !"  
        .ShowInput = True  
        .ShowError = True  
    End With  
End Sub


 
Remplace, dans le code suivant, le "<feuille>" par le nom de la feuille dans laquelle se trouve ton textticket.text ...
 
with <feuille>.TextTicket.Text
 
(bien que je me demande si ca s'applique à une "forme" ... car tu parlais de case au départ !!!)


Message édité par Vobiscum le 06-10-2005 à 09:18:24
Reply

Marsh Posté le 06-10-2005 à 09:16:40   

Reply

Marsh Posté le 06-10-2005 à 09:40:26    

Salut,
 
il manque le validation et il faut placer ce code dans le worksheet_selectionchange de la feuille qui contient la cellule à valider, comme ça la validation se fait en cours de saisie et nom au lancement de la macro.
 

Code :
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     With Range("TextTicket.Text" ).Validation
  3.         .Delete
  4.         .Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _
  5.         :=xlGreaterEqual, Formula1:="0"
  6.         .IgnoreBlank = True
  7.         .InCellDropdown = True
  8.         .InputTitle = ""
  9.         .ErrorTitle = "Donnée non valide !"
  10.         .InputMessage = ""
  11.         .ErrorMessage = "Veuillez saisir des chiffres."
  12.         .ShowInput = True
  13.         .ShowError = True
  14.     End With
  15. End Sub


pour peu effectivement qu'il s'agisse d'une cellue et non d'un camp à remplir dans un formulaire.
bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 06-10-2005 à 15:10:17    

L'auteur du topic travaille sous VB6 et pas sous VBA excel, arretez de lui donner des techniques qu'il ne peut pas utiliser.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 06-10-2005 à 15:19:57    

C'est pas possible ?
On fait comment alors ?

Reply

Marsh Posté le 06-10-2005 à 15:32:42    

Désolée topfrunix, comme l'a fait remarqué mareek, mon post de réponse ne colle pas avec ce que tu annonçais dans ton premier post. Il ne peut coller que dans le VB liè à excel.
 
J'espère que quelqu'un d'autre pourra t'aider.


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 06-10-2005 à 16:18:36    

TopFrunix a écrit :

C'est pas possible ?
On fait comment alors ?


Je connais pas de solution simple. la seule que je vois c'est de vérifier ce que l'utilisateur tape en temps réel (via l'évennement txtbox_change)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 06-10-2005 à 17:58:57    

Je connais pas les fonctions de VB6, jen fait depuis deux cours...
Tu peux expliquer comment cette fonction marche et bloquer toutes les lettres ?

Reply

Marsh Posté le 06-10-2005 à 18:04:11    

L'evenement change se produit lorsque le contenu de la textbox change. Pour bloquer les lettres, il faut vérifier le contenu de la textbox à chaque fois qu'il change et virer les lettres du texte.

Reply

Marsh Posté le 06-10-2005 à 22:12:51    

sur l'evenement keypress de ton TextBox
définit l'intervalle de ton KeyAscii  
 
Pour Saisir que des nombres:  


Private Sub TextBox_KeyPress(KeyAscii as integer)
    If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 And Chr(KeyAscii) <> "." then
        KeyAscii = 0
    End if
End Sub


 
Pour Saisir que du texte :


Private Sub TextBox_KeyPress(KeyAscii as integer)
    If (KeyAscii < 65 or (KeyAscii > 90 and KeyAscii < 97) or KeyAscii > 122) and KeyAscii <> 8 then
        KeyAscii = 0
    End if
End Sub


 
Astuces :


- KeyAscii <> 8         pour autoriser la suppression
- chr(KeyAscii)) <> "." pour autoriser les nombres décimaux avec le symbole "." comme séparateur


Message édité par Profil supprimé le 06-10-2005 à 23:15:41
Reply

Marsh Posté le 06-10-2005 à 23:21:54    

meri je vais essayer.
Je vais chercher sur le net les correspondance du clavier car je ne sais pas à quoi correspond "90" "97" 122"... De cette maniere je saurrais même comment retraintre certain chiffres ou autre.
Encore merci

Reply

Marsh Posté le 07-10-2005 à 07:39:34    

TopFrunix a écrit :

meri je vais essayer.
Je vais chercher sur le net les correspondance du clavier car je ne sais pas à quoi correspond "90" "97" 122"... De cette maniere je saurrais même comment retraintre certain chiffres ou autre.
Encore merci


regarde ici  ;)

Reply

Marsh Posté le 07-10-2005 à 15:41:56    

merci c'est bien pratique ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed