EXCEL (sans VBA) : format personnalisé / liste

  • Initiateur de la discussion Initiateur de la discussion dionys0s
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dionys0s

XLDnaute Impliqué
Bonjour le forum

j'ai un souhait assez spécifique :
J'aimerais que l'affichage de certaines cellules de mon classeur diffère de ce qui se trouve dans la barre de formule :
Par exemple si l'utilisateur tape 1, la barre de formula affiche bien 1 (en VBA, LaCellule.Value), mais la cellule affiche "machin" (en VBA, LaCellule.Text)
Si l'utilisateur tape 2, la barre de formula affiche bien 2 mais la cellule affiche "truc".

etc...
Je peux le faire avec un format personnalisé (formule : "[=1]"machin";[=2]"truc";Standard"), mais le problème c'est que je suis limité à 2 possibilités, et sur le principe c'est erroné puisque ce type de syntaxe de format personnalisé est fait pour traiter les valeurs positives, puis négatives, puis nulles, puis le texte.

J'aimerais avoir la possibilité d'avoir jusqu'à potentiellement 20 valeurs numériques qui affichent du texte, mais que la barre de formule reste du numérique.

Je me demandais s'il existait un moyen de faire ça. J'ai essayé avec des mises en formes conditionnelles, mais je n'ai visiblement pas le droit d'utiliser .Text dans celles-ci.

Quelqu'un aurait-il une piste ?

D'avance merci pour votre aide 🙂
 
Re : EXCEL (sans VBA) : format personnalisé / liste

Bon bah je sais pas si c'est l'idéal, mais c'est faisable avec une mise en forme conditionnelle. Ou plutôt avec autant de mise en forme conditionnelles que j'ai de valeurs numériques à retraiter sur une plage :
Exemple pour une :
VB:
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1)
        .NumberFormat = """machin"""
    End With
    Selection.FormatConditions(1).StopIfTrue = True

Je sais pas s'il y a une solution qui est mieux / moins lourde / plus fiable etc., mais je trouve ça déjà bien pratique.
 
Re : EXCEL (sans VBA) : format personnalisé / liste

Bonjour dionys0s,

Faut pas rêver, seul VBA peut faire ce que vous voulez faire, par exemple :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, r As Range
a = Array("truc1", "truc2", "truc3", "truc4", "truc5", "truc6", _
  "truc7", "truc8", "truc9", "truc10", "truc11", "truc12", _
    "truc13", "truc14", "truc15", "truc16", "truc17", "truc18", _
       "truc19", "truc20")
Set r = Intersect(Target, Me.UsedRange)
If Not r Is Nothing Then
  For Each r In r
    r.NumberFormat = "General"
    If IsNumeric(r) Then If r = Int(r) And r And r < 21 Then _
      r.NumberFormat = """" & a(r - 1) & """"
  Next
End If
End Sub
Edit : vu votre MFC, mais sur Excel 2003 il n'y a pas de format Nombre dans les MFC...

A+
 
Dernière édition:
Re : EXCEL (sans VBA) : format personnalisé / liste

Bonjour Job
Re le forum,

non, ça marche aussi avec des mises en forme conditionnelles.
Certes, il faut faire ces mises en forme avec du code, mais une fois que c'est figé, pas besoin d'utiliser de procédure evénementielle.

Edit : je viens de voir votre edit.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
457
Réponses
6
Affichages
502
Réponses
9
Affichages
456
Réponses
3
Affichages
216
Réponses
2
Affichages
1 K
Retour