SAISIE PERSONNALISÉE(cellule alphanumérique)

bonjour tout le monde ,

je suis nouveau sur ce site mon problème est le suivant :

Je souhaite trouver un moyen pour que l'utilisateur de mon fichier soit obligé de respecter un format de saisie .

Plus précisément, je souhaite obliger tous les utilisateurs en remplissant la colonne A du classeur, la saisie soit alphanumérique c'est à dire 1-que la cellule ne dépasse pas 9 caractères ni moins de 9 aussi

2-la saisie doit être de la forme par exemple

GTC000-01 -> 2 caractères après le tiret

GTC000-A1 -> 2 caractères après le tiret

3-PAS DE CARACTERES SPECIAUX DANS LES 6 PREMIERS COMME GT-C000-01

4-si possible éviter les doublons dans la colonne

NB / j'avais un exemple de ce type dans ce forum mais qui ne corresponds pas à mes attentes merci d'avance

https://forum.excel-pratique.com/excel/cellule-alpha-numerique-t23690.html

Bonjour,

Pour les 9 caractères, tu peux faire :

Données --> Validation des données --> Autoriser "Longueur du texte" "égale à" "9"

Pour les 2 caractères après le tiret, je ne voit pas trop comment faire avec cette méthode. En revanche c'est faisable en macro.

Bonjour,

Une proposition à tester.

Cdlt.

Bonjour le forum,

A tester :

Format : Personnalisé :

"GTC000-"00_*;"GTC000--"_-@_-

Re,

Voir le fichier joint.

Bonjour,

Une proposition à tester.

Cdlt.

TEST-CD-SECTEUR-FORMAT-XXXXXX-XX.xlsm

Bonjour Jean-Eric

Pour ma culture, y a t-il moyen de contrôler pendant la saisie ?

Bonjour,

Une proposition à tester.

Cdlt.

TEST-CD-SECTEUR-FORMAT-XXXXXX-XX.xlsm

MERCI pour vos réponses et merci bcp ERIC le code marche bien bonne journée à tous

REbonjour Jean Eric ,

Est-ce normal en saisissant des données dans les autres colonnes j'ai un un beug de la macro?

Bonjour,

Une proposition à tester.

Cdlt.

TEST-CD-SECTEUR-FORMAT-XXXXXX-XX.xlsm

Bonjour Jean-Eric

Pour ma culture, y a t-il moyen de contrôler pendant la saisie ?

Bon, je me suis fendu tout seul d'une solution temps réel ...

la question est maintenant d'optimiser !

Re,

Bonjour Steelson,

La proposition initiale revue.

Cdlt.

Re,

Bonjour Steelson,

La proposition initiale revue.

Cdlt.

TEST-CD-SECTEUR-FORMAT-XXXXXX-XX.xlsm

MERCI ERIC peut-etre je demande trop svp est-ce possible de changer la colonne A ET REMPLACER PAR LA COLONNE D dans le code j'y arrive avec votre code merci d'acavce

Re,

Une nouvelle proposition à étudier.

Cdlt.

Re,

Une nouvelle proposition à étudier.

Cdlt.

TEST-CD-SECTEUR-FORMAT-XXXXXX-XX.xlsm

MERCI BCP super

est-ce possible de changer la colonne A ET REMPLACER PAR LA COLONNE D dans le code j'y arrive avec votre code merci d'acavce

si tu veux tester la solution que j'ai proposée, il suffit de changer Target.Row = 1 en Target.Row = 4

est-ce possible de changer la colonne A ET REMPLACER PAR LA COLONNE D dans le code j'y arrive avec votre code merci d'acavce

si tu veux tester la solution que j'ai proposée, il suffit de changer Target.Row = 1 en Target.Row = 4

ok merci

Bon, je me suis fendu tout seul d'une solution temps réel ...

la question est maintenant d'optimiser !

J'ai un poil optimisé la macro

et j'ai mis les caractères autorisés dans l'onglet Pattern

Dim ancien As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 1 And Target.Row > 1 And Target.Count = 1 Then
    Set ancien = Target
    Me.TextBox1.Height = Target.Height + 3
    Me.TextBox1.Width = Target.Width
    Me.TextBox1.Top = Target.Top
    Me.TextBox1.Left = Target.Left
    Me.TextBox1 = Target
    Me.TextBox1.Visible = True
    Me.TextBox1.Activate
  Else
    If Not ancien Is Nothing Then
        If Len(ancien.Value) <> Sheets("Pattern").Range("C1").Value Then ancien.Value = Empty
    End If
    Me.TextBox1.Visible = False
  End If
End Sub

Private Sub TextBox1_Change()
  If Me.TextBox1.Value Like Sheets("Pattern").Range("A1").Offset(Len(Me.TextBox1.Value), 1).Value And _
    Len(Me.TextBox1.Value) <= Sheets("Pattern").Range("C1").Value Then
    ActiveCell.Value = Me.TextBox1.Value
  Else
    Me.TextBox1.Value = ActiveCell.Value
  End If
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    If Len(ActiveCell.Value) <> Sheets("Pattern").Range("C1").Value Then ActiveCell = Empty
    ActiveCell.Offset(, 1).Select
  End If
End Sub
Rechercher des sujets similaires à "saisie personnalisee alphanumerique"