Limiter la saisie à un format particulier

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. 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. Contributeur
      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
  2. 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. 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
    2. Contributeur
      @proufixerelis 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
    3. 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
    4. Contributeur
      @proufixeOuf!
      bonne journée
      :o)
      0
  3. Contributeur
    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
    1. 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
      1. Contributeur
        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
        1. 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
          1. 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

            Discussions similaires

            question pix mot caché

            7 réponses