Limitation a la frappe caracteres dans excel
artie
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Limitation a la frappe caracteres dans excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment calculer la moyenne sur excel - Guide
- Caractères spéciaux - Guide
- Aller à la ligne excel - Guide
7 réponses
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. :
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
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
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
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
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
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
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
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
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 ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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
A la fermeture du fichier, on désactive les touches
A tester
Cdlt
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
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
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
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+
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+