Limitation a la frappe caracteres dans excel

Fermé
artie - 19 févr. 2009 à 01:15
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 4 mars 2015 à 16:26
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 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 250
Modifié par eriiic le 4/03/2015 à 12:35
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 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
19 févr. 2009 à 07:32
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
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 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
19 févr. 2009 à 12:45
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
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 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
19 févr. 2009 à 18:46
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 58826 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 janvier 2025 17 272
19 févr. 2009 à 20:59
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 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
4 mars 2015 à 13:54
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 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 250
4 mars 2015 à 16:26
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 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
19 févr. 2009 à 10:49
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