Bienvenue sur les forums conseil & création · S'enregistrer

Se connecter automatiquement

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » modifier la clr du texte s'il dépasse un nbre de caractères · Envoyer le lien

Par Martine, le 04 Mai 2006, 10:44 Revenir en haut de page Répondre en citant

Idea Bonjour,
je préparer un fichier contenant certaines cellules de texte. J'ai limité les cellules (par le biais de la validation des données) pour que le texte ne puisse être supérieur à 1000 caractères. Un avertissement me prévient quand je dépasse les 1000, mais j'aimerais en + faire apparaître tous les caractères au dessus de 1000 dans une autre couleur, ce qui faciliterait la réduction du texte pour atteindre le nombre donné.

Puis-je faire ça dans "validation de données", ou faut-il passer par "forme conditionnelle" si oui comment le libeller.

merci d'avance,

Martine
Par Cédric, le 05 Mai 2006, 12:16 Revenir en haut de page Répondre en citant

Bonjour,

Je n'ai pas trouvé de solution à ce problème en utilisant :

  • la validation des données: je n'ai réussi au mieux qu'à stopper le changement s'il y a plus de N caractères.

  • la mise en forme conditionnelle: je n'ai réussi qu'à modifier la mise en forme de tout le texte de la cellule, en utilisant la condition:
    [ =SI(NBCAR(cellule)>N;VRAI;FAUX) ]


Par contre, les macro permettent également de vérifier le nombre de caractères saisis... et donc de traiter la cellule

Le code ci-dessous doit être placé dans le code de la feuille (par exemple Feuil1) avec Visual Basic Editor. Il faut modifier maxi_cell (la cellule pour laquelle on veut limiter le nombre de caractères, ici D5) et maxi (le nombre de caractères maximum).

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim maxi
maxi_cell = "D5"
maxi = 1000
If Len(Target) > maxi And Not Intersect(Target, Range(maxi_cell)) Is Nothing Then
  result = MsgBox("supprimer les caratères en trop?", vbYesNo, ("Cette cellule est limitée à " & maxi & " caractères"))
  If result = vbYes Then
    Target = Left(Target, maxi)
  Else
    Target.Characters(1, maxi).Font.Bold = False
    Target.Characters(maxi, Len(Target)).Font.Bold = True
  End If
End If
End Sub


La fonction va d'abord vérifier si la cellule modifiée est bien celle qu'on veut limiter, et si la limite est atteinte. Si la limite est atteinte, on demande à l'utilisateur si il veut supprimer les caractères en trop.
  • S'il répond oui, les caractères sont supprimés
  • S'il répond non, les "N" caractères après la limite (définie par "maxi") sont mis en valeur (en gras, mais on pourrait définir d'autres attributs comme la couleur, le soulignement...)

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » modifier la clr du texte s'il dépasse un nbre de caractères · Envoyer le lien