Limiter la saisie à un format particulier

Fermé
proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015 - 22 avril 2015 à 09:24
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 avril 2015 à 13:51
Bonjour à tous,

Après de nombreuses recherches ici et ailleurs, je ne trouve toujours pas ce que je souhaite.

En effet, je voudrais limiter la saisie en colonne A.
au format suivant

P CCCCCC L

Où P est la lettre P (constant), CCCCCC sont des chiffres allant de 0 à 9 et L= un lettre allant de A à Z.

Je pense qu'il faut passer par une formule VBA, mais je dois avouer, que je n'ai aucune connaissance dedans.

Si vous avez une idée, je suis preneur.

D'avance merci et j'espère ne pas avoir fait de doublon :)

Bien cordialement
A voir également:

7 réponses

Excel-worker Messages postés 589 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 23 juillet 2015 58
22 avril 2015 à 09:40
Bonjour,

Joins nous un fichier exemple en le mettant sur cjoint.com

Comment tes données sont remplies ? Manuellement ou avec extraction d'un autre fichier ?

Cordialement
0
proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
22 avril 2015 à 09:54
Quelle efficacité merci.

https://www.cjoint.com/?0DwkgPxF00A voici pour le lien du fichier, j'ai juste supprimé la deuxième feuille car elle contenait des données.

Et mes données sont remplies manuellement. D'où l'intérêt de limiter la saisie afin d'éviter les erreurs de saisie.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 22/04/2015 à 10:20
Bonjour

pour le fun par les expressions rationnelles
Function verif_format2(texto As String) As Boolean
Dim reg As Object
Dim verif As Object
Set reg = CreateObject("vbscript.regexp")
reg.Global = False
reg.Pattern = "^[P]\s[0-9]{6}\s[A-Z]"
Set verif = reg.Execute(texto)
verif_format2 = (verif.Count = 1)
End Function


par ex si le format à vérifier est dans la cellule A2
Function verif_format2(tu cliques sur A2) renvoie Vrai ou faux
si tu veux vérifier la colonne tu tires vers le bas

nota: sensible à la casse (n'admet que des lettres majuscules)

Michel
0
proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
22 avril 2015 à 10:21
Merci, mais ce n'est pas ce que je recherches.

La personne doit saisir en A un "identifiant client" qui est sous le format précité. Si la saisie est incorrecte, impossible de saisir ou message d'alerte.

Désolé si je n'ai pas été assez précis.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 22/04/2015 à 10:44
Peut-^tre comme ca
saisir l'identifiant colonne A
https://www.cjoint.com/?3Dwk0mz1clJ

code dans le module feuil1
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("A")) Is Nothing And Target.Value <> "" Then
If Not verif_format2(Target.Value) Then MsgBox "erreur de saisie"
End If
End Sub


la fonction proposée tout à l'heure dans un module standard


Michel
0
proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
22 avril 2015 à 10:49
And Target.Value <> "" Then
If Not verif_format2(Target.Value) Then MsgBox "erreur de saisie"


Ca ne signifie pas que si j'ai une saisie différente de "rien" j'aurais un message bloquant erreur de saisie?
0
proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
22 avril 2015 à 11:15
Et je sais pas si c'était assez clair, mais l'identifiant n'est pas fixe

par exemple je dois saisir
en a4 : P123456T
en a5 P654321R
Etc, si je saisie P12345T => "erreur de saisie"
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
Modifié par michel_m le 22/04/2015 à 11:24
relis ta 1° demande, tu as écris
P CCCCCC L

et maintenant ca devient
P654321R
PCCCCCCL
bref espaces ou pas d'espace
:-((
Pas très sérieux...
0
proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
Modifié par proufixe le 22/04/2015 à 11:45
C'était juste pour que ce soit plus lisible.
Maintenant, je sais à quoi sert le
/s
dans ta première chaîne.....

Le format est bien PCCCCCCL

Et j'ai compris le pourquoi du
<>"" 

Du coup désolé de cette "erreur"
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
22 avril 2015 à 11:48
Ouf!
bonne journée
:o)
0
proufixe Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 22 avril 2015
Modifié par proufixe le 22/04/2015 à 13:25
Bon faisons autrement, car je n'aime pas quand on bosse à ma place, pis c'est comme ça qu'on apprend au moins.

Grâce aux différentes aides, j'arrive à cela :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing And Target.Value <> "^[P][0-9]{6}[A-Z]" Then
MsgBox "erreur de saisie " 
End If
End Sub



C'est un bon début, j'ai au moins un texte qui s'affiche quand je saisi quelque chose dans la colonne du moins ca me met erreur de saisie

Mais peu importe les données saisies, c'est toujours en erreur
Mais quand je rajoute à la fin
& Target.Address


Ca me met erreur de saisie dans B(x+1) quand je fais entrée.

Et si je reclique sur la cellule B(x) j'ai aussi le message erreur de saisie avec la correspondance de la bonne cellule.

Des pistes pour m'aider?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 avril 2015 à 13:51
je ne sais pas ce que tu cherche à te prouver mais tu est en train de te planter plutôt que de progresser.
Pattern est une méthode de l'objet regexp qui répond à des spécifications propres et non utilisables ailleurs.
exprimé sous forme de string,la syntaxe utilisée est propre à cette propriété : les caractères utilisés sont des symboles de modélisation et non du texte tel qu'on l'entend.
0