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 08/12/2011, 08h42   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : septembre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Associations - ONG

Informations forums :
Inscription : septembre 2011
Messages : 20
Points : 14
Points : 14
Par défaut Cadre de saisie et fonction "like"

Bonjour à tous,

J'ai créé un userform, et je suis en train d'appliquer tout un tas de contrôles et de vérifications des données saisies par l'utilisateur dans mes textbox et autres. Je bloque au moment de faire la validation d'une textbox qui contient un code.
Ce code peut avoir trois formats:
- A00-0nnnn
- EQ-0nnnn
- EQ-0nnnnn
(avec 'n' étant un chiffre entre 1 et 9)

J'ai utilisé le code suivant:
Code :
1
2
3
4
5
6
7
Private Sub TBoxIDNumber_exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not TBoxIDNumber.Value Like "EQ-0#####" Or TBoxIDNumber.Value Like "EQ-0####" Or TBoxIDNumber.Value Like "A00-0####" Then
        Me.TBoxIDNumber.SetFocus
        MsgBox "The Equipment ID number should follow one of these format ('n' means number):" & vbCr & vbCr & "EQ-0nnnnn (i.e: EQ-013543)" & vbCr & vbCr & "EQ-0nnnn (i.e: EQ-09561)" & vbCr & vbCr & "A00-0nnnn (i.e: A00-01543)"
        Exit Sub
    End If
End Sub
Le problème c'est que la j'ai une erreur pour toute autre entrée différente que le premier masque ("EQ-0#####").
J'utilise surement le 'Like' de la mauvaise manière, mais je ne sais pas comment changer ma macro pour qu'elle prenne en compte mes trois masques de saisie.

Est-ce que vous auriez une solution à me donner pour résoudre ce problème?

Autre question: j'ai compris que 'SetFocus' ne fonctionnait pas sur l'évenement 'Exit', comment puis-je revenir sur mon textbox après mon message d'erreur?


Merci d'avance pour vos réponses.
matbiz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 10h52   #2
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Il y a un problème de logique dans le If. Le Not doit s'appliquer aux trois tests, donc il faut mettre les trois Like entre parenthèses :
Code :
If Not (TBoxIDNumber.Value Like "EQ-0#####" Or TBoxIDNumber.Value Like "EQ-0####" Or TBoxIDNumber.Value Like "A00-0####") Then
tedo01 est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 08/12/2011, 11h02   #3
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : septembre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Associations - ONG

Informations forums :
Inscription : septembre 2011
Messages : 20
Points : 14
Points : 14
Merci beaucoup tedo01!

Ca marche parfaitement!


Je laisse la discussion ouverte puisque j'aimerais bien comment utiliser l'option 'SetFocus' dans mon évennement 'Exit' (ou alors trouver quelque chose d'équivalent).
matbiz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 11h23   #4
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Re-bonjour,
Essaie de faire Cancel = True à la place du SetFocus...
tedo01 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h40.


 
 
 
 
Partenaires

Hébergement Web