[VBA] Saisir une valeur mais pas n'importe laquelle !

Le
Pierre93
Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur que le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #5236061
Bonjour,

La question n'est pas assez précise:
-Quel type de valeur(chaîne,nombre,date,heure?)
-Même contrôle pour les 10 textBox

JB
http://boisgontierjacques.free.fr

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
If Val(Me.TextBox1) > 10 Then
MsgBox "erreur"
Cancel = True
End If
End Sub

On 1 mar, 09:38, "Pierre93"
Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être saisi e
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un ongl et
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur que le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93


Pierre93
Le #5235981
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93


"Pierre93"
Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur que le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93



JB
Le #5235871
http://cjoint.com/?dbnujHHA8z

Dim Txt(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 10
Set Txt(b).GrSaisie = Me("textbox" & b)
Me("textbox" & b).MaxLength = 5
Next b
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nom = GrSaisie.Name
UserForm1(nom) = Replace(UserForm1(nom), ",", ":")
End Sub

JB


On 1 mar, 11:34, "Pierre93"
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93"



Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être sai sie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un on glet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur que le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Pierre93
Le #5235831
MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB"

http://cjoint.com/?dbnujHHA8z

Dim Txt(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 10
Set Txt(b).GrSaisie = Me("textbox" & b)
Me("textbox" & b).MaxLength = 5
Next b
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nom = GrSaisie.Name
UserForm1(nom) = Replace(UserForm1(nom), ",", ":")
End Sub

JB


On 1 mar, 11:34, "Pierre93"
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93"



Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être
saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un
onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur que le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



JB
Le #5235791
http://cjoint.com/?dbpQb5Ukeg

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nomChamp = GrSaisie.Name
UserForm1(nomChamp) = Replace(UserForm1(nomChamp), ":", ",")
If Val(UserForm1(nomChamp)) > 24 Then
MsgBox ">24"
End If
If Not IsNumeric(UserForm1(nomChamp)) Then
MsgBox "Saisir numérique"
End If
End Sub


JB

On 1 mar, 13:58, "Pierre93"
MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB"

http://cjoint.com/?dbnujHHA8z

Dim Txt(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
  For b = 1 To 10
    Set Txt(b).GrSaisie = Me("textbox" & b)
    Me("textbox" & b).MaxLength = 5
  Next b
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
    nom = GrSaisie.Name
    UserForm1(nom) = Replace(UserForm1(nom), ",", ":")
End Sub

JB

On 1 mar, 11:34, "Pierre93"


Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93"

Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être
saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un
onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur qu e le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Pierre93
Le #5235751
Je joins à nouveau un fichier modifié pour y voir un peu plus clair !

Donc, en fait les nombres que l'on doit saisir dans les TextBox sont listés
dans un onglet (3 listes définies => liste1, liste2 et liste3).
A partir du nombre affiché dans le TextBox du bas (ici à l'occurence
"4.00"), ce sera la liste1 qui est concernée, si on saisie le chiffre "4.80"
(il ne figure pas dans la liste), le bon chiffre peut-être soit "4.25",
"4.50", ou "4.75" alors un message d'erreur apparaît pour avertir
l'utilisateur que sa saisie n'est pas valable !!!
Si cela peut vous aider !

Merci

Pierrot du 93

http://cjoint.com/?dbqkjZT3Tj



"JB"
http://cjoint.com/?dbpQb5Ukeg

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nomChamp = GrSaisie.Name
UserForm1(nomChamp) = Replace(UserForm1(nomChamp), ":", ",")
If Val(UserForm1(nomChamp)) > 24 Then
MsgBox ">24"
End If
If Not IsNumeric(UserForm1(nomChamp)) Then
MsgBox "Saisir numérique"
End If
End Sub


JB

On 1 mar, 13:58, "Pierre93"
MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB"

http://cjoint.com/?dbnujHHA8z

Dim Txt(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 10
Set Txt(b).GrSaisie = Me("textbox" & b)
Me("textbox" & b).MaxLength = 5
Next b
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nom = GrSaisie.Name
UserForm1(nom) = Replace(UserForm1(nom), ",", ":")
End Sub

JB

On 1 mar, 11:34, "Pierre93"


Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93"

Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être
saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un
onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur que
le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des
messages précédents -


- Afficher le texte des messages précédents -




JB
Le #5235731
Pourquoi pas des combo?

http://cjoint.com/?dbrdCdmfA8

Dim Cmb(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For i = 1 To 10
If Me.TextBox11 = "4.00" Then Me("combobox" & i).RowSource =
"liste1"
If Me.TextBox11 = "12.00" Then Me("combobox" & i).RowSource =
"liste2"
If Me.TextBox11 = "20.00" Then Me("combobox" & i).RowSource =
"liste3"
Set Cmb(i).GrSaisie = Me("ComboBox" & i)
Next i
End Sub

JB


On 1 mar, 16:10, "Pierre93"
Je joins à nouveau un fichier modifié pour y voir un peu plus clair !

Donc, en fait les nombres que l'on doit saisir dans les TextBox sont list és
dans un onglet (3 listes définies => liste1, liste2 et liste3).
A partir du nombre affiché dans le TextBox du bas (ici à l'occurence
"4.00"), ce sera la liste1 qui est concernée, si on saisie le chiffre "4 .80"
(il ne figure pas dans la liste), le bon chiffre peut-être soit "4.25",
"4.50", ou "4.75" alors un message d'erreur apparaît pour avertir
l'utilisateur que sa saisie n'est pas valable !!!
Si cela peut vous aider !

Merci

Pierrot du 93

http://cjoint.com/?dbqkjZT3Tj

"JB" :/ /cjoint.com/?dbpQb5Ukeg

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
    nomChamp = GrSaisie.Name
    UserForm1(nomChamp) = Replace(UserForm1(nomChamp), ":", ",")
    If Val(UserForm1(nomChamp)) > 24 Then
      MsgBox ">24"
    End If
    If Not IsNumeric(UserForm1(nomChamp)) Then
      MsgBox "Saisir numérique"
    End If
End Sub

JB

On 1 mar, 13:58, "Pierre93"


MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB"

http://cjoint.com/?dbnujHHA8z

Dim Txt(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 10
Set Txt(b).GrSaisie = Me("textbox" & b)
Me("textbox" & b).MaxLength = 5
Next b
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nom = GrSaisie.Name
UserForm1(nom) = Replace(UserForm1(nom), ",", ":")
End Sub

JB

On 1 mar, 11:34, "Pierre93"
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93"

Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être
saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans u n
onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur que
le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte de s
messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -





Pierre93
Le #5235721
J'y ai pensé, JB, mais pour les besoins de mon application et surtout pour
un meilleure fluidité dans la saisie des chiffres, je préfère les TextBox.
En effet en dessous de ces TextBox, il y a d'autres TextBox que l'on doit
renseigner, mais là ce sont des lettres !

As tu compris ma démarche ?

Je te remercie pour tes efforts.

Pierrot du 93


"JB"
Pourquoi pas des combo?

http://cjoint.com/?dbrdCdmfA8

Dim Cmb(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For i = 1 To 10
If Me.TextBox11 = "4.00" Then Me("combobox" & i).RowSource "liste1"
If Me.TextBox11 = "12.00" Then Me("combobox" & i).RowSource "liste2"
If Me.TextBox11 = "20.00" Then Me("combobox" & i).RowSource "liste3"
Set Cmb(i).GrSaisie = Me("ComboBox" & i)
Next i
End Sub

JB


On 1 mar, 16:10, "Pierre93"
Je joins à nouveau un fichier modifié pour y voir un peu plus clair !

Donc, en fait les nombres que l'on doit saisir dans les TextBox sont
listés
dans un onglet (3 listes définies => liste1, liste2 et liste3).
A partir du nombre affiché dans le TextBox du bas (ici à l'occurence
"4.00"), ce sera la liste1 qui est concernée, si on saisie le chiffre
"4.80"
(il ne figure pas dans la liste), le bon chiffre peut-être soit "4.25",
"4.50", ou "4.75" alors un message d'erreur apparaît pour avertir
l'utilisateur que sa saisie n'est pas valable !!!
Si cela peut vous aider !

Merci

Pierrot du 93

http://cjoint.com/?dbqkjZT3Tj

"JB" ://cjoint.com/?dbpQb5Ukeg

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nomChamp = GrSaisie.Name
UserForm1(nomChamp) = Replace(UserForm1(nomChamp), ":", ",")
If Val(UserForm1(nomChamp)) > 24 Then
MsgBox ">24"
End If
If Not IsNumeric(UserForm1(nomChamp)) Then
MsgBox "Saisir numérique"
End If
End Sub

JB

On 1 mar, 13:58, "Pierre93"


MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB"

http://cjoint.com/?dbnujHHA8z

Dim Txt(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 10
Set Txt(b).GrSaisie = Me("textbox" & b)
Me("textbox" & b).MaxLength = 5
Next b
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nom = GrSaisie.Name
UserForm1(nom) = Replace(UserForm1(nom), ",", ":")
End Sub

JB

On 1 mar, 11:34, "Pierre93"
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93"

Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-être
saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un
onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateur
que
le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des
messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des
messages précédents -


- Afficher le texte des messages précédents -





JB
Le #5235641
http://cjoint.com/?dbtTVAgcyl

JB

On 1 mar, 17:30, "Pierre93"
J'y ai pensé, JB, mais pour les besoins de mon application et surtout po ur
un meilleure fluidité dans la saisie des chiffres, je préfère les Te xtBox.
En effet en dessous de ces TextBox, il y a d'autres TextBox que l'on doit
renseigner, mais là ce sont des lettres !

As tu compris ma démarche ?

Je te remercie pour tes efforts.

Pierrot du 93

"JB"
Pourquoi pas des combo?

http://cjoint.com/?dbrdCdmfA8

Dim Cmb(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
  For i = 1 To 10
    If Me.TextBox11 = "4.00" Then Me("combobox" & i).RowSource =
"liste1"
    If Me.TextBox11 = "12.00" Then Me("combobox" & i).RowSource =
"liste2"
    If Me.TextBox11 = "20.00" Then Me("combobox" & i).RowSource =
"liste3"
    Set Cmb(i).GrSaisie = Me("ComboBox" & i)
  Next i
End Sub

JB

On 1 mar, 16:10, "Pierre93"


Je joins à nouveau un fichier modifié pour y voir un peu plus clair !

Donc, en fait les nombres que l'on doit saisir dans les TextBox sont
listés
dans un onglet (3 listes définies => liste1, liste2 et liste3).
A partir du nombre affiché dans le TextBox du bas (ici à l'occurence
"4.00"), ce sera la liste1 qui est concernée, si on saisie le chiffre
"4.80"
(il ne figure pas dans la liste), le bon chiffre peut-être soit "4.25" ,
"4.50", ou "4.75" alors un message d'erreur apparaît pour avertir
l'utilisateur que sa saisie n'est pas valable !!!
Si cela peut vous aider !

Merci

Pierrot du 93

http://cjoint.com/?dbqkjZT3Tj

"JB" ://cjoint.com/?dbpQb5Ukeg

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nomChamp = GrSaisie.Name
UserForm1(nomChamp) = Replace(UserForm1(nomChamp), ":", ",")
If Val(UserForm1(nomChamp)) > 24 Then
MsgBox ">24"
End If
If Not IsNumeric(UserForm1(nomChamp)) Then
MsgBox "Saisir numérique"
End If
End Sub

JB

On 1 mar, 13:58, "Pierre93"
MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB"

http://cjoint.com/?dbnujHHA8z

Dim Txt(1 To 10) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 10
Set Txt(b).GrSaisie = Me("textbox" & b)
Me("textbox" & b).MaxLength = 5
Next b
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
nom = GrSaisie.Name
UserForm1(nom) = Replace(UserForm1(nom), ",", ":")
End Sub

JB

On 1 mar, 11:34, "Pierre93"
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93"

Bonjour !

J'ai dans un userform plusieurs TextBox (10). Une valeur peut-êt re
saisie
mais pas quelle n'importe valeur. Ces valeurs sont stockées dans un
onglet
de mon classeur.
Comment, à l'aide d'un message par exemple, avertir l'utilisateu r
que
le
chiffre qu'il vient de saisir n'est pas valide ?

Merci.

Pierre du 93- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des
messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte de s
messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -






Publicité
Poster une réponse
Anonyme