XL 2016 Flèches de tendance + Pourcentage

  • Initiateur de la discussion Initiateur de la discussion Nikita
  • 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 !

Nikita

XLDnaute Nouveau
Bonjour à tous,

Je travail actuellement sur un fichier qui va me servir à faire un rapport à mes clients.

Mon but est de comparer deux colonnes (Consommation d'eau 2016 et 2017), de mettre en pourcentage la différence entre celles-ci et d'ajouter une flèche de tendance dans la même cellule.

Vous trouverez dans mon fichiers ci-joint les prémices de mon travail :
  • Colonne G : évolution grâce à la police "Wingdings 3". La flèche ne me plait guère et je n'arrive pas à ajouter mon pourcentage à la suite de celle-ci
  • Colonne H : formule + mise en forme conditionnelle. Je dois me louper dans ma mise en forme care je n'arrive pas à afficher la flèche rouge vers le bas lorsque le pourcentage est en négatif.
Si une âme charitable passe par là, je suis preneur !

A+
 

Pièces jointes

Dernière édition:
Bonjour Nikita, le forum,
Il n'est pas possible de formater différemment les caractères renvoyés par une formule.
Oui mais avec VBA on évite les formules et on peut mettre en forme les textes concaténés :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, x$
With ListObjects(1).DataBodyRange 'tableau Excel
  Set r = Intersect(Target, Union(.Columns(2), .Columns(4)))
  If r Is Nothing Then Exit Sub
  Set r = Intersect(r.EntireRow, .Columns(2))
End With
Application.ScreenUpdating = False
For Each r In r 'si entrées multiples (copier-coller)
  r(1, 5).Font.Name = "Consolas" 'RAZ, police à chasse fixe pour un bon alignement
  r(1, 5).Font.Size = r.Font.Size - 0.5 'RAZ
  r(1, 5).Font.ColorIndex = xlAutomatic 'RAZ
  If IsNumeric(r) And r <> 0 And IsNumeric(CStr(r(1, 3))) Then
    x = Format(r(1, 3) / r - 1, "0%")
    If Left(x, 1) = "-" Then 'valeur < 0
      r(1, 5) = "ê" & String(6 - Len(x), " ") & x
      r(1, 5).Characters(1, 1).Font.ColorIndex = 3 'rouge
    Else 'valeur >= 0
      r(1, 5) = "é" & String(6 - Len(x), " ") & x
      r(1, 5).Characters(1, 1).Font.ColorIndex = 10 'vert
    End If
    r(1, 5).Characters(1, 1).Font.Name = "Wingdings"
    r(1, 5).Characters(1, 1).Font.Size = r.Font.Size + 1
  Else
    r(1, 5) = ""
  End If
Next
End Sub
Fichier .xlsm joint.

Bonne journée.
 

Pièces jointes

Salut job75,

Merci pour le boulot, jolie résultat !

La solution avec la mise en forme conditionnelle me semble la plus simple mais je ne suis pas ravie du "design" des flèches (oui je suis pointilleux). Sais-tu s'il est possible de les modifier ?

Cordialement.
 
Re,

Salut D.D., oui c'est aussi une solution sans VBA, pas meilleure que la MFC je trouve.

Deux autres exemples avec des caractères unicode.

Bien sûr il existe des flèches inclinées.

Edit : dans la mesure où une tendance < 0 est souhaitée j'ai inversé les couleurs.

A+
 

Pièces jointes

Dernière édition:
- 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

Retour