Limitation a la frappe caracteres dans excel

artie -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je suis debutant dans excel.

je veux taper un texte dans un tableau excel et qu'a chaque frappe (y compris les espaces) le curseur passe automatiquement a la cellule suivante de la ligne, puis en fin de ligne ( a la 40 eme colonne ) a la première cellule de la ligne suivante.

merci d'avance
A voir également:

7 réponses

eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
Bonjour,

Une proposition qui réparti tous les caractères d'une saisie dans B2:B6 sur les colonnes dans la limite de 40 car. :
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long, s As String
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, [B2:B6]) Is Nothing Then Exit Sub
    If Len(Target) > 40 Then
        MsgBox Len(Target) & " caractères !"
    Else
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        s = Target
        For i = 1 To Len(s)
            Target.Offset(, i - 1) = Mid(s, i, 1)
        Next i
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End If
End Sub 

Ca ne te fait plus qu'un seul Enter par ligne.
Si il faut découper les tranches de 40 car sur plusieurs lignes le préciser.
eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
2
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 443
 
Bonjour
sauf erreur de compréhension de la question, essayez:
1°) outil / option / Onglet "Modification"
Cochez" déplacer sélection après validation"(ça doit déja être fait)
choisir sens: Droite
2°) sélectionner dans la feuille le champ à remplir complet:
Nombre de colonnes voulues et nombre de lignes suffisant, (ou alors toutes la hauteur des colonnes choisies en sélectionnant sur la régle des entêtes)
3° taper les caractères et entrée à chaque fois. Le curseur démarre à la première cellule en haut à gauche du champ et reviendra à la première colonne, ligne en dessous lorsqu'il aura atteint la limite du champ
Si j'ai bien compris....!
Crdlmnt
1
niceben
 
on cherche je crois un moyen de taper le texte et qu'il se répartisse un caractère par cellule sans avoir à taper entrée entre chaque caractère (on utiliserait tab en ce cas).
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 443
 
Re
il me semble toutefois avoir vérifié sur mon Excel (qui est peut être un spécial) que la cellule détectée par le clavier dans le cas d'une sélection multiple contigue est bien la première en haut à gauche, où rentre le premier texte frappé... comme indiqué au point N°3 de mon message 2.
A noter que dans le cas de champs non alignés,c'est le dernier champ sélectionné qui engage le départ
Je pense que la seule différence entre ma proposition et la demande tient au fait qu'il faut faire une entrée pour changer de cellule.
Crdlmnt
0
artie
 
Merci beaucoup mais mes nombreux essais n'ont pas donné de résultat.

J ai trouvé un code qui déclenche un pop up quand le contenu d'une cellule dépasse le contenu autorisé

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In UsedRange
If Len(cell.Value) > 1 Then
MsgBox " Can't enter more than 1 character"
cell.Value = ""
End If
Next

End Sub

C'est possible aussi dans la validation des données, j'aimerais qu au lieu de ce message excel execute, dés dépassement du nombre de caractères autorisés (1), la commande "entrée, pour que le caractère supplémentaire s inscrive automatiquement dans la cellule suivante . Est-ce possible en changeant une ligne du code? Je ne connais pas l'écriture de code et ne sais pas comment faire.
Pour le changement de ligne au bout de 40 colonnes la solution que tu m as proposée ne marche pas sur mon excel

Merci
-1
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
C'est comme dit plus haut, l'événement "Selection_Change" n'intervient QU'APRES AVOIR CHANGER DE CELLULE ET PAS PENDANT !!
Vaucluse : d'accord si ENTER mais j'ai dit Strictement Cad SANS ENTER
peut-être un moyen.. API
Mais ce serra asser "lourd" en code. Est-ce VRAIMENT nécessaire SANS Enter ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 71833 Date d'inscription   Statut Contributeur Dernière intervention   17 381
 
Tu te dis débutant dans Excel. Alors laisse tomber les macros et utilise la méthode indiquée par Vaucluse dès le post 2.
0
Frenchie83 Messages postés 2254 Statut Membre 339
 
Bonjour
Une autre façon de procéder, en activant chaque touches à l'ouverture du fichier. Dès que le caractère est frappé sans valider par "Entrée" , on passe à la cellule voisine. Seul inconvénient, il faut recopier chaque bout de programme pour chaque touche, mais ça répond à la question "d'Artie".

Voici un échantillon
Sub auto_open()
    'Activation des touches
    Application.OnKey "{ }", "Espace"
    Application.OnKey "{a}", "a"
    Application.OnKey "{b}", "b"
    Application.OnKey "{c}", "LettreC"
End Sub

Sub Espace()
    ActiveCell.Value = " "
    Deplacement
End Sub

Sub a()
    ActiveCell.Value = "a"
    Deplacement
End Sub

Sub b()
    ActiveCell.Value = "b"
    Deplacement
End Sub

Sub LettreC()
    ActiveCell.Value = "c"
    Deplacement
End Sub

Sub Deplacement()
    If ActiveCell.Column = 40 Then ActiveCell.Offset(1, -39).Select Else: ActiveCell.Offset(0, 1).Select
End Sub

Sub Auto_close()
    'désactivation des touches
    Application.OnKey "{ }", ""
    Application.OnKey "{a}", ""
    Application.OnKey "{b}", ""
    Application.OnKey "{LettreC}", ""
End Sub

A la fermeture du fichier, on désactive les touches
A tester
Cdlt
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
Re,

voir aussi cette autre proposition (remontée à cause du +1)
https://forums.commentcamarche.net/forum/affich-11128445-limitation-a-la-frappe-caracteres-dans-excel#11
eric
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour tous,
Si l'ont veux s'en tenir strictement à l'explication, ce n'est pas possible sur une feuille vu qu'il n'y a pas de détection du clavier dans une cellule active
et quand une cellule est en édition, les macros aussi, sont inactive.
Une éventuelle solution, la saisie se faisant dans un textBox
A+
-1