1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2016 MFC COULEURS

Discussion dans 'Forum Excel' démarrée par mcj1997, 8 Janvier 2019.

  1. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    Bonjour,

    J'ai une problématique de MFC en PJ.
     

    Pièces jointes:

    • MFC.xlsx
      Taille du fichier:
      11 Ko
      Affichages:
      25
  2. Chargement...

    Discussions similaires - MFC COULEURS Forum Date
    XL 2013 Compter couleurs MFC (mise en forme conditionnelle) Forum Excel 26 Octobre 2017
    MFC differentes couleurs sur plage Forum Excel 21 Février 2017
    XL 2003 MFC avec 3 couleurs et 4 valeurs Min/Max Forum Excel 8 Octobre 2015
    Mfc pour changer la cellule de couleurs Forum Excel 11 Septembre 2015
    MFC deux couleurs Forum Excel 11 Août 2015

  3. riton00

    riton00 XLDnaute Occasionnel

    Inscrit depuis le :
    16 Mars 2009
    Messages :
    336
    "J'aime" reçus :
    12
    Utilise:
    Excel 2003 (PC)
    Bonsoir,

    Tu peux essayer comme ça

    Slts
     

    Pièces jointes:

  4. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    OK merci mais je recherche une solution permettant de changer les % dans le tableau et non dans la MFC car dans mon tableau officiel je vais avoir plusieurs cases concernées par ces conditions et ce sera plus facile de modifier les conditions dans le tableau et que la MFC aille y chercher les conditions.
     
  5. Denis132

    Denis132 XLDnaute Impliqué

    Inscrit depuis le :
    15 Octobre 2007
    Messages :
    903
    "J'aime" reçus :
    12
    Habite à:
    Valleyfield
    Utilise:
    Excel 2010 (PC)
    Bonjour à vous 2,

    Peut-être comme ceci.

    Regarde les formats de cellules.

    @+

    Denis
     

    Pièces jointes:

    • MFC.xlsx
      Taille du fichier:
      10.6 Ko
      Affichages:
      16
  6. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26016
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour mcj1997, riton00, Denis132,

    La solution de Denis est la bonne solution mais on peut aussi s'amuser avec cette fonction VBA :
    Code (Text):
    Function PCT(t$)
    Dim s, a(), i%, j%
    s = Split(" " & t, "%")
    ReDim a(UBound(s)) 'base 0
    For i = 0 To UBound(s)
        For j = Len(s(i)) - 1 To 1 Step -1
            If Not IsNumeric(Mid(s(i), j, 1)) Then a(i) = Val(Mid(s(i), j + 1)) / 100: Exit For
        Next
    Next
    PCT = a 'vecteur ligne
    End Function
    Fichier joint.

    A+
     

    Pièces jointes:

    • MFC(1).xlsm
      Taille du fichier:
      24.5 Ko
      Affichages:
      17
  7. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)

    Merci
     
  8. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    Merci, mais j'aimerais bien comprendre car c'est plutôt bien.
     
  9. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26016
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Il s'agit d'une fonction VBA, utilisez-la les yeux fermés, difficile de l'expliquer.
     
  10. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    OK, toutefois dommage que la fonction VBA n'empêche pas la MFC.
     
  11. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26016
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    ??? Pas compris car la fonction VBA permet de créer la MFC.
     
  12. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    il faut bien en plus de la fonction VBA renseigner la MFC.
     
  13. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26016
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Evidemment puisque c'est le but de la fonction.
     
  14. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26016
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour mcj1997, le forum,

    Avec ces macros dans le fichier joint il n'y a plus besoin de MFC :
    Code (Text):
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cible As Range, crit As Range
    Set cible = [B2]
    Set crit = [D2:D4]
    If Intersect(Target, Union(cible, crit)) Is Nothing Then Exit Sub
    Target.Select
    cible.Interior.ColorIndex = xlNone 'RAZ
    cible.Font.ColorIndex = xlAutomatic 'RAZ
    If cible < PCT(crit(1))(0) Then
        cible.Interior.ColorIndex = 3 'rouge
        cible.Font.ColorIndex = 2 'police blanche
    ElseIf cible >= PCT(crit(2))(0) And cible <= PCT(crit(2))(1) Then
        cible.Interior.ColorIndex = 44 'orange
    ElseIf cible >= PCT(crit(3))(0) Then
        cible.Interior.ColorIndex = 43 'vert
    End If
    End Sub

    Function PCT(t$)
    Dim s, a(), i%, j%
    s = Split(" " & t, "%")
    ReDim a(UBound(s)) 'base 0
    For i = 0 To UBound(s)
        For j = Len(s(i)) - 1 To 1 Step -1
            If Not IsNumeric(Mid(s(i), j, 1)) Then a(i) = Val(Mid(s(i), j + 1)) / 100: Exit For
        Next
    Next
    PCT = a 'vecteur ligne
    End Function
    Noter qu'ici il n'est plus nécessaire que la fonction VBA soit dans un module standard.

    Bonne journée.
     

    Pièces jointes:

  15. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    Bonjour,

    C'est très bien, merci par contre dans mon fichier complet j'ai besoin de faire cette mise en forme dans d'autres cases que B2. Pour rajouter des cases, par exemple pour l'avoir aussi en C2, j'ai essayé cela :
    Set cible = [B2;C2]

    mais cela ne fonctionne pas,

    Merci d'avance,
     
  16. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26016
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Re,

    Pour traiter les cellules d'une plage il suffit de faire une boucle, voyez ce fichier (2).

    A+
     

    Pièces jointes:

    Denis132 aime votre message.
  17. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    Bonjour,

    Merci beaucoup, c'est vraiment top !!!
     
  18. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    Bonsoir,

    Je suis en train de tester la macro dans mon fichier définitif. Deux questions j’ai plusieurs cellules avec des atteintes en % qui sont concernées par la formule donc à mettre sur la ligne : set plage [c3,d3,g14,r2] etc .... les cellules ne se suivent pas et il y en a beaucoup à mettre dans la formule.
    1) - à la place de la fonction set plage .... n’existerait il pas une fonction pour dire que toutes les cellules avec un % sont concernées par la mise en forme ?
    2) - les cellules qui comportent un % résultent d’une formule qui tournent à l’ouverture du fichier et j’ai constaté que la mise en forme ne se faisait qu’en retapant le résultant sur au moins une cellule et tout se met à jour, c’est bien sûr pas fonctionnel car cela efface la formule, y aurait il une solution de contournement ?

    Merci d’avance
     
  19. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26016
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour mcj1997, le forum,

    Dans ce fichier (3) les cellules du UsedRange au format pourcentage sont traitées :
    Code (Text):
    For Each cible In UsedRange
        If Right(cible.NumberFormat, 1) = "%" Then 'format pourcentage
    A+
     

    Pièces jointes:

  20. mcj1997

    mcj1997 XLDnaute Impliqué

    Inscrit depuis le :
    16 Août 2008
    Messages :
    920
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Utilise:
    Excel 2016 (PC)
    Bonjour,

    Merci pour le retour, toutefois , lorsque j'utilise cette formule dans mon fichier : un premier message : erreur d'éxécution 13 incompatibilité de type et lorsque je clique sur débogage la ligne : If cible < PCT(crit(1))(0) Then ressort en jaune.

    Est-ce parce qu'i y a beaucoup de formules, des colonnes masquées ?
     

Partager cette page