Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

9 réponses
Avatar
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

9 réponses

Avatar
JB
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" wrote:
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


Avatar
Pierre93
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93


"Pierre93" a écrit dans le message de news:

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



Avatar
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" wrote:
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93" a écrit dans le message de news:




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 -



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

A+

"JB" a écrit dans le message de news:


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" wrote:
Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93" a écrit dans le message de news:




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 -



Avatar
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" wrote:
MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB" a écrit dans le message de news:


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" wrote:



Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93" a écrit dans le message de news:


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 -




Avatar
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" a écrit dans le message de news:

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" wrote:
MerciJB, mais ce n'est pas ce que je recherche exactement.

A+

"JB" a écrit dans le message de news:


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" wrote:



Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93" a écrit dans le message de news:


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 -




Avatar
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" wrote:
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" a écrit dans le message de news:
:/ /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" wrote:



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

A+

"JB" a écrit dans le message de news:


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" wrote:

Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93" a écrit dans le message de new s:


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 -





Avatar
Pierre93
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" a écrit dans le message de news:

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" wrote:
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" a écrit dans le message de news:
://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" wrote:



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

A+

"JB" a écrit dans le message de news:


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" wrote:

Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93" a écrit dans le message de news:


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 -





Avatar
JB
http://cjoint.com/?dbtTVAgcyl

JB

On 1 mar, 17:30, "Pierre93" wrote:
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" a écrit dans le message de news:

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" wrote:



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" a écrit dans le message de news:
://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" wrote:

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

A+

"JB" a écrit dans le message de news:


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" wrote:

Voici un exemple :

http://cjoint.com/?dblIj1GGrA

Pierrot du 93

"Pierre93" a écrit dans le message de n ews:


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 -