EXCEL (sans VBA) : format personnalisé / liste

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 :)
 

dionys0s

XLDnaute Impliqué
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.
 

job75

XLDnaute Barbatruc
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:

dionys0s

XLDnaute Impliqué
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

  • Num_Affich_Text.xlsm
    43.9 KB · Affichages: 19

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2