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. 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
    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. 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. 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
            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. 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
            2. 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

            Discussions similaires

            question pix mot caché

            7 réponses