Craig développe une feuille de calcul et souhaite savoir s’il existe un moyen de spécifier le nombre maximum de caractères pouvant être saisis dans une cellule donnée. Il ne souhaite pas utiliser la validation des données pour imposer la limitation.

Il n’y a aucun moyen de le faire directement dans Excel sans (comme Craig le mentionne)

en utilisant la validation des données. Cependant, vous pouvez essayer plusieurs choses pour obtenir l’effet souhaité. Tout d’abord, vous pouvez utiliser une formule pour vérifier la longueur de n’importe quelle cellule, puis afficher un message d’erreur, si vous le souhaitez. Par exemple, si les cellules que vous souhaitez vérifier se trouvent dans la colonne C, vous pouvez utiliser une formule telle que la suivante:

=IF((LEN(C1)>15),"Cell is Too Long","")

Placez la formule dans la cellule à droite de la cellule en cours de vérification (comme dans la cellule D1), puis copiez-la autant de cellules que nécessaire.

Lorsqu’une entrée est effectuée en C1, et si elle comporte plus de 15 caractères, le message s’affiche.

Si une telle approche directe n’est pas souhaitable, vous devrez utiliser des macros pour effectuer la vérification. Voici un exemple simple qui est déclenché chaque fois que quelque chose est modifié dans la feuille de calcul. Chaque cellule de la feuille de calcul est ensuite vérifiée pour s’assurer qu’elle ne dépasse pas 15 caractères. Si une telle cellule est découverte, une boîte de message s’affiche et la cellule est effacée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

For Each cell In UsedRange         If Len(cell.Value) > 15 Then             MsgBox " Can't enter more than 15 characters"

cell.Value = ""

End If     Next End Sub

Une approche plus robuste consiste à vérifier dans le gestionnaire d’événements pour voir si la modification a été effectuée quelque part dans une plage de cellules qui doivent être limitées en longueur.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rng As Range     Dim rCell As Range     Dim iChars As Integer     On Error GoTo ErrHandler

'Change these as desired     iChars = 15     Set rng = Me.Range("A1:A10")



If Not Intersect(Target, rng) Is Nothing Then         Application.EnableEvents = False         For Each rCell In Intersect(Target, rng)

If Len(rCell.Value) > iChars Then                 rCell.Value = Left(rCell.Value, iChars)

MsgBox rCell.Address & " has more than" _                   & iChars & " characters." & vbCrLf _                   & "It has been truncated."

End If         Next     End If

ExitHandler:

Application.EnableEvents = True     Set rCell = Nothing     Set rng = Nothing     Exit Sub

ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

Pour utiliser cette macro, il vous suffit de modifier la valeur attribuée à iChars (représente la longueur maximale autorisée) et la plage affectée à rng (actuellement définie sur A1: A10). Étant donné que la macro vérifie uniquement les modifications dans la plage spécifiée, elle est beaucoup plus rapide avec des feuilles de calcul plus volumineuses que la macro qui vérifie toutes les cellules utilisées.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3150) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Setting_a_Length_Limit_on_Cells [Définition d’une limite de longueur sur les cellules].