Limiter contenu de cellule

Bonjour à tous,

Comment limiter la saisie à une lettre dans une cellule.

Et comment donner une direction en cliquant sur la touche "Entrée"

Merci d'avance de votre aide

Amicalement noel

Bonjour cfn3cfn,

Comment limiter la saisie à une lettre dans une cellule.

Je suppose que la solution via validation de données ne te convient pas puisqu'elle ne fait qu'afficher un message d'erreur.

J'ai donc trouvé cette macro sur le net qui pourrait répondre à ton besoin:

Cellule A1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
If Len(Range("A1")) > 1 Then
Range("A1").Value = Left(Range("A1").Value, 1)
End If
End If
End Sub

Cordialement,

Bonjour xorsankukai ,

Pour le moment j'ai aucun message d'erreur. Je pense qu'il faut installer ce bout de code dans la feuille.

mais malgré cela j'ai pas d'erreur mais à la saisie d'une lettre le curseur ne passe pas à la cellule suivante car je voudrai qu'une seule lettre dans la cellule.

Merci

Amicalement

Noel

Bonjour,

si, une validation permet de bloquer une saisie, voir PJ.

Et comment donner une direction en cliquant sur la touche "Entrée"

soit utiliser les flèches pour valider, soit le changer dans les options avancées.

eric

12classeur1.xlsx (8.93 Ko)

Bonjour Eriiic

Ca je sais faire. Mais je pensais comme eVBA on avait la possibilité de limiter le nombre de lettre par cellule.

Merci de ton aide

Amicalement

Noel

Bonjour,

Un exemple :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        Application.EnableEvents = False
        Select Case VarType(Target)
            Case vbString:
                With Target
                    .Value = Mid(Target.Value, 1, 1)
                    .Offset(, 5).Select
                End With
            Case Else:
                With Target
                    .Value = ""
                    .Select
                End With
        End Select
        Application.EnableEvents = True
    End If
End Sub

Re,

Je pense qu'il faut installer ce bout de code dans la feuille

Le code est à placer dans le module de la feuille1 (Alt + F11)

Si tu tapes plusieurs caractères et que tu tapes sur entrée (ou une flèche comme l'a indiqué Jean-Eric), il ne garde que le premier caractère.

A bientôt,

ps: bonjour Jean-Eric

Bonjour le forum,

Sélectionner la plage concernée par cette limitation.

1 caractere

Bonjour à vous,

J'ai essayé plusieurs de vos méthodes mais cela donne rien d'autant plus que pour JeanEric j'ai déjà dans ma feuille un code portant le même nom de code Private Sub Worksheet_Change(ByVal Target As Range). Donc j'ai essayé de l'inclure dans la feuille mais il me donne une erreur à

If Target.CountLarge > 1 Then Exit Sub.

merci à tous

Amicalement

Noel

Ca je sais faire. Mais je pensais comme eVBA on avait la possibilité de limiter le nombre de lettre par cellule.

Je ne comprend pas bien.

Autant ma proposition que celle de mbpp limite la saisie à 1 caractère (la mienne, plus restrictive, limite à A-Z,a-z), ce que tu veux.

Je ne vois pas ce que vba apporterait de plus.

eric

Bonjour Eriiic,

Je comprends et j'ai bien reçu ton bout de code mais je l'ai testé dans mon projet, mais cela ne fonctionne pas.

A moins que je te fasse parvenir mon projet pour que tu puisse voir ce qui pose comme problème.

Merci

Amicalement

Noël

Bonjour,

je n'ai mis aucun code, il s'agit d'une validation par formule.

Teste le fichier joint plutôt.

eric

Re,

Bien sure que j'ai testé le fichier joint mais cela ne me convient pas tout simplement que l'utilisateur risque de saisir au fil de l'eau et il faut qu'il passe annuler ou réessayer.

je voudrai lors de la saisie le curseur passe à la cellule suivante.

merci

Amicalement

Noel

Ca ne te convient pas parce ce n'est pas ce que tu avais demandé, et non parce que ça ne fonctionne pas comme tu dis si bien...

edit : ce que tu demandes n'est pas possible.

On ne détecte une saisie d'une cellule qu'au moment du Enter. Il en faut donc un après chaque lettre, et là plus besoin de macro.

Bonjour à tous,

Juste un petit essai :

  • si 1 caractère saisi, ok
  • si plus d'un caractère, message d'avertissement (qui s'efface automatiquement au bout de 2 secondes) et retour sur la cellule pour recommencer la saisie.

Cordialement,

Bonjour à tous,

Bonjour Eriiic,

Bonjour xorsankukai,

C'est exacte ce que dis Eriiic. J'avais tout simplement pensé que la saisie dans une cellule ne pouvait qu'accepter une lettre. Je vois bien que c'est impossible et je m'en excuse.

Quant à xorsankukai j'ai bien essayé ton bout de projet. C'est à l'identique sauf la présentation.

Je vous remercie tous de votre aide.

A l'issu de cette constatation, je ferme ce fil.

Encore un gros merci pour votre dévouement et le temps que je vous ai fait perdre.

Amicalkement

Noel

Bonjour,

à relire maintenant tu as aussi une validation sur 'Longueur du texte', pas besoin de formule.

Et dans les validations tu as l'onglet 'Message de saisie', qui te permet de faire un rappel à l'utilisateur lorsqu'il se présente sur la cellule.

eric

Edit : je viens de voir ta question sur le Scrabble.

Dans ce cas demande à l'utilisateur son mot, puis de sélectionner les 2 premières cellules où il le pose.

Ca te donnera le point de départ et le sens pour répartir les lettres.

Bonjour à tous,

Je ne comprends pas trop la trajectoire de la discussion dans la mesure où toutes les solutions fournies sont applicables pour fournir le résultat demandé !

Et si je considère la première macro proposée, elle limitait la saisie à un caractère, comme souhaité, et si l'on voulait un déplacement du curseur dans un sens déterminé à la suite, il suffisait de l'y rajouter...

Cordialement.

Bonjour MFerrand,

Oui j'ai bien compris tout ça.

Je pensais avoir une solution simple à la saisie. A la saisie d'une lettre le curseur passait systématiquement à la cellule suivante. J'ai bien compris que c'était pas possible.

Merci

Amicalement

Noel

Si tu le programmes, le curseur passera à la cellule suivante en ne laissant qu'un caractère dans la cellule saisie...

Rechercher des sujets similaires à "limiter contenu"