Interdire le texte dans un champs - VB/VBA/VBS - Programmation
Marsh Posté le 05-10-2005 à 17:25:07
TopFrunix a écrit : Bonjour, |
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"
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 ?
Marsh Posté le 05-10-2005 à 19:57:56
TopFrunix a écrit : je n'ai pas le menu "data" |
Dans XL pas dans visual basic .... puis si tu veux tu l'enregistre comme nouvelle macro et tu l'utilise après
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'.
Marsh Posté le 05-10-2005 à 21:01:57
TopFrunix a écrit : Comment tu fais exactement ? |
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.
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.
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
Marsh Posté le 06-10-2005 à 09:16:40
TopFrunix a écrit : J'ai un message d'erreur lors de l'execution du programme... |
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 !!!)
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 :
|
pour peu effectivement qu'il s'agisse d'une cellue et non d'un camp à remplir dans un formulaire.
bon courage
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.
Marsh Posté le 06-10-2005 à 15:19:57
ReplyMarsh 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.
Marsh Posté le 06-10-2005 à 16:18:36
TopFrunix a écrit : C'est pas possible ? |
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)
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 ?
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.
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:
|
Pour Saisir que du texte :
|
Astuces :
|
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
Marsh Posté le 07-10-2005 à 07:39:34
TopFrunix a écrit : meri je vais essayer. |
regarde ici
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