MFC vs VBA - Dashboard avec icônes personnalisés

Y compris Power BI, Power Query et toute autre question en lien avec Excel
W
Willau
Membre fidèle
Membre fidèle
Messages : 174
Inscrit le : 31 mai 2017
Version d'Excel : 2016

Message par Willau » 10 janvier 2019, 11:49

Bonjour à tous,

Je cherche depuis plusieurs jours à régler un petit problème purement optique sur un dashboard pour mon entreprise.

Les icônes ou signes références sont édictés par une directive interne que je ne peux pas faire changée.
(Losange, rond, triangle et carré avec différents codes couleurs.

Pourriez-vous m'aider à trouver une solution ? Vos expertises me permettront sans doute à régler ce problème.
Il s'agit de dépasser les MFC afin que je puis personnaliser mon affichage par code VBA.

J'ai joint un fichier afin que vous puissiez mieux comprendre mon besoin.
J'espère y avoir donné suffisamment de détails.

D'avance merci pour l'intérêt porté à ma requête.

Willau

T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 10 janvier 2019, 12:19

Bonjour,

Code à mettre dans le module de la feuille concernée :
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) <> "I6" Then Exit Sub
    
    Application.EnableEvents = False
    
    With Range("I26")
    
        Select Case Target.Value
    
            Case 0
                .Value = "u": .Font.Name = "Wingdings": .Font.ColorIndex = 1
    
            Case 1
                .Value = "n": .Font.Name = "Wingdings": .Font.ColorIndex = 3
    
            Case 2
                .Value = "p": .Font.Name = "Wingdings 3": .Font.ColorIndex = 44
    
            Case 3
                .Value = "l": .Font.Name = "Wingdings": .Font.ColorIndex = 43
    
        End Select
    
    End With
    
    Application.EnableEvents = True
    
End Sub
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
W
Willau
Membre fidèle
Membre fidèle
Messages : 174
Inscrit le : 31 mai 2017
Version d'Excel : 2016

Message par Willau » 10 janvier 2019, 13:06

Salut Theze
Merci pour la prompte solution.
Je vais essayé ça et te faire un retour.
Cela paraît tellement plus "simple" quand on a une solution sous les yeux :wink:
Cordialement

Willau
W
Willau
Membre fidèle
Membre fidèle
Messages : 174
Inscrit le : 31 mai 2017
Version d'Excel : 2016

Message par Willau » 10 janvier 2019, 13:10

Magnifique !! ça marche tip top :-)

Petite demande supplémentaire:
Existe-t-il un tableau ou une référence où je peux trouver les "Font.ColorIndex"
Pour le 3 par exemple tu as choisi un vert trop clair.
J'aimerais pouvoir l'adapter. Voire pouvoir adapter moi-même à l'avenir d'autre icônes.

Encore merci !
Willau
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 10 janvier 2019, 13:11

Comme dit le proverbe, Vaut mieux 1 qui sait que 100 qui cherchent ! :wink:
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
W
Willau
Membre fidèle
Membre fidèle
Messages : 174
Inscrit le : 31 mai 2017
Version d'Excel : 2016

Message par Willau » 10 janvier 2019, 13:15

J'adore ce proverbe !

Evidemment, quand une chose fonctionne, on en veut toujours plus...

En début de VBA tu écris:
If Target.Address(0, 0) <> "I6" Then Exit Sub

Comment puis-je faire si j'ai plusieurs cellule qui remplissent le même format:
par ex.: "I29"; "C2"; "A1"

PRECISON : c'est bien le With Range("I26") que je souhaite élargir...
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 10 janvier 2019, 13:32

Petite demande supplémentaire:
Existe-t-il un tableau ou une référence où je peux trouver les "Font.ColorIndex"
actives un feuille vierge et exécutes ce code, tu auras les couleurs en colonne A et l'index correspondant en colonne B :
Sub Test()

    Dim I As Integer
    
    For I = 1 To 56
    
        Cells(I, 1).Interior.ColorIndex = I
        Cells(I, 2).Value = I
        
    Next I

End Sub
Comment puis-je faire si j'ai plusieurs cellule qui remplissent le même format:
par ex.: "I29"; "C2"; "A1"
Avec Intersect() :
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Intersect(Target, Range("A1, C2, I29")) Is Nothing Then Exit Sub
    
    Application.EnableEvents = False
    
    With Range("I26")
    
        Select Case Target.Value
    
            Case 0
                .Value = "u": .Font.Name = "Wingdings": .Font.ColorIndex = 1
    
            Case 1
                .Value = "n": .Font.Name = "Wingdings": .Font.ColorIndex = 3
    
            Case 2
                .Value = "p": .Font.Name = "Wingdings 3": .Font.ColorIndex = 44
    
            Case 3
                .Value = "l": .Font.Name = "Wingdings": .Font.ColorIndex = 43
    
        End Select
    
    End With
    
    Application.EnableEvents = True
    
End Sub
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'118
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 10 janvier 2019, 14:38

Bonjour,

Concernant les colorindex:
couleur index.xlsm
(19.1 Kio) Téléchargé 4 fois
Ou encore:
https://docs.microsoft.com/en-us/office ... ColorIndex
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
W
Willau
Membre fidèle
Membre fidèle
Messages : 174
Inscrit le : 31 mai 2017
Version d'Excel : 2016

Message par Willau » 10 janvier 2019, 14:44

Maintenant que l'on m'a mis sur la voie... je peaufine :
Est-il possible de déterminer la taille de chaque caractère de police ?
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 10 janvier 2019, 14:45

voir la propriété "Font.Size"
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message