|
|
|
|
Bonjour,
Je cherche à limiter le nombre de caractères pouvant etre saisis dans une cellule (45 caractères Maximum).
C'est à dire, lorsque je clic à l'intérieur de la cellule, je ne puisse pas saisir au delà de la limite définie.
Sur Internet je n'ai trouvé que des réponses faisant référence à : Données > Validation, ce qui malheureusement ne résout pas mon problème.
J'avais cherché au début à aller dans les préférences de cellules et peut etre mettre 40 x "*" pour limiter mon texte, mais cela ne marche pas :(
Du coup j'avais pensé à procéder autrement :
Créer une macro qui va copier la colonne (que je veux limiter), dans une autre, puis en faisant une formule on ne prendra que 40 caractères en partant de gauche et on copie/colle le tout dans la colonne initiale.
Mais pour que l'utilisateur n'aie rien d'autre à faire que de saisir ses données, la macro devra s'executer à chaque fois qu'on clic sur "Entrée" dans notre plage de cellules (colonne Z on va dire).
J'ai trouvé le code suivant :
worksheets_SelectionChange(ByRef target As Range)
Mais j'ai un peu de mal à savoir comment lui attribuer ma colonne "Z", et surtout si "selectionChange", correspond bien au fait d'appuyer sur "Entrée"
Tous les conseils sont bienvenues :)
Si tu ne sais pas demande, si tu sais partage.Configuration: Windows XP
Internet Explorer 6.0
Bonjour Michel_m,
|
OK, j'avais lu trop vite, excuses moi
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(Z1:Z1000")) Is Nothing Then: Exit Sub
Application.EnableEvents = False
Target = Left(Target.Value, 25)
Application.EnableEvents = True
End Sub
pour installer cette macro clic droit sur l'onglet de la feuille-visualiser le code et tu copies colles cette macro En espèrant que... Je ne réponds pas à des questions techniques par message privé Cordialement, Michel |
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
If Len(Range("A1")) > 45 Then
Range("A1").Value = Left(Range("A1").Value, 45)
End If
End If
End Sub
Inutile de me poser des questions en MP... Définitivement je n'y réponds pas... Le forum est fait pour ça. |
Bonjour Marina,
|
Bonsoir,
|
1/ le If Len(Cells(ligne, 30)) > 4 Then est inutile...
|
Je viens de tester de rajouter le "target.count=1" dans ton premier code Michel, et ça me retourne erreur : "type mismatch" en selectionnant le "=".
|
Bonsoir
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("AD:AD")) Is Nothing Then
If Len(Target) > 45 Then
Target.Value = Left(Target.Value, 45)
End If
End If
End Sub
et si tu veux vraiment vérifier au moment de la frappe si la cellule de la colonne A est remplie, ça donne ça : Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("AD:AD")) Is Nothing Then
If Len(Target) > 45 And Target.Offset(0,-29) <> "" Then
Target.Value = Left(Target.Value, 45)
End If
End If
End Sub
m@rina Inutile de me poser des questions en MP... Définitivement je n'y réponds pas... Le forum est fait pour ça. |
Bonjour Marina,
|
Bonjour stranger-46
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("AD:AD")) Is Nothing Then
On Error Resume Next
For Each c In Target
If Len(c) > 45 Then
c.Value = Left(c.Value, 45)
End If
Next c
End If
End Sub
m@rina Inutile de me poser des questions en MP... Définitivement je n'y réponds pas... Le forum est fait pour ça. |
Alors là ...
|