Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2011, 17h36   #1
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
Par défaut controle textbox avec chiffre commencant par 0

bonjour,
voila j'ai recupéré des bouts de code qui fonctionnent super bien mais mon pb est que je n'arrive pas a faire accepter le chiffre "0" comme premier chiffre.
je suis pas encore tres doué en vba cela fait un mois que je pedale (mal) mais j'espère bien faire des progres.

a chaque entrée du style 0612121212 il y a la msgbox "saisie non valide"

un petit coup de main me serait agréable merci

voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub TextBox4TelFixe_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim strpassa As String
   strpassa = TextBox4TelFixe.Value
   If ChainePasOK1(strpassa) = True Then Cancel = True: TextBox4TelFixe.Value = "": Beep: MsgBox "Saisie non valide !"
End Sub
 
Private Function ChainePasOK1(strpassa As String) As Boolean
   If strpassa = "" Then Exit Function
   If Len(Replace(strpassa, ".", "")) <> Len(strpassa) Then ChainePasOK1 = True: Exit Function
   If Len(strpassa) = 1 And InStr("1234567890", strpassa) = 0 Then ChainePasOK1 = True: Exit Function
   strpassa = Replace(strpassa, ",", ".")
   If Len(CStr(Val(strpassa))) <> Len(strpassa) Then ChainePasOK1 = True
End Function
 
Private Sub TextBox4TelFixe_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then
      KeyAscii = 0: Beep
   End If
End Sub
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 18h05   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

il me semble que c'est cette ligne qui te pose problème
Code :
If Len(CStr(Val(strpassa))) <> Len(strpassa) Then ChainePasOK1 = True
La conversion en valeur de ta saisie supprime les 0 qui sont à gauche
Code :
Val(0612121212) => 612121212
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 18h08   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Tu écris :
Code :
If Len(CStr(Val(strpassa))) <> Len(strpassa) Then ChainePasOK1 = True
Avec strpassa=”0612121212”, tu as donc : Len(strpassa)=10.
D’autre part, Val(strpassa)= 612121212 et Len(CStr(Val(strpassa)))=9
Donc, ChainePasOK1 = True.
et If ChainePasOK1(strpassa) = True Then MsgBox "Saisie non valide !"

Cordialement.

Bonjour Jfontaine,
il me semble que nous avons fait la même remarque ... c'est bon signe !
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 20h25   #4
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
merci pour vos reponses et vos pistes

alors j'ai modifié la ligne comme suit :
Code :
 If Len(CStr(strpassb)) <> Len(strpassb) Then ChainePasOK2 = True
cela a l'air de fonctionner

merci encore
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 20h28   #5
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Tu peux meme retirer la ligne car ton test équivaut a
Code :
If strpassb <> strpassb Then ChainePasOK2 = True
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h19.


 
 
 
 
Partenaires

Hébergement Web