Limiter la saisie à un format particulier

proufixe Messages postés 8 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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

7 réponses

  1. Excel-worker Messages postés 603 Statut Membre 58
     
    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
  2. proufixe Messages postés 8 Statut Membre
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. proufixe Messages postés 8 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  7. proufixe Messages postés 8 Statut Membre
     
    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
    1. proufixe Messages postés 8 Statut Membre
       
      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
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > proufixe Messages postés 8 Statut Membre
         
        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
    2. proufixe Messages postés 8 Statut Membre
       
      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
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > proufixe Messages postés 8 Statut Membre
         
        Ouf!
        bonne journée
        :o)
        0
  8. proufixe Messages postés 8 Statut Membre
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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