couleur et mfc en vba avec variable

Droussel

XLDnaute Occasionnel
Bonjour à Tous
Voici le problème :
J'ai créé un livret d'élèves pour ma fille qui est instit et qui doit remplir à la main chaque trimestre un carnet de note par élève
J'ai donc créé son livret avec une ligne pour chaque matière et une case pour la note (lettre de A à D)
j'ai également créé une feuille de saisie ou elle rentre les notes de chaque élève et en fonction de l'élève selectionné la note vient se renseigner au travers d'une formule (recherchev)
jusque là rien de compliqué
J'ai ajouté des couleurs en fonction de la note avec la possibilité de choisir entre 1 - une couleur de fond et la note en noir 2 -le fonds blanc et la note en couleur 3 fonds blanc et note en noir
Pour cela j'aurai souhaité récupérer la couleur sélectionné dans une zone : c'est la macro ci dessous

Sub codecouleur()
Sheets("tables").Select
codcouleurD = Range("g2").Value
If codcouleurD = 2 Then
themcouleurD = "Selection.FormatConditions(1).Interior.PatternColorIndex = xlAutomatic.ThemeColor = xlThemeColorDark2"
End If
If codcouleurD = 3 Then
themcouleurD = "Selection.FormatConditions(1).Interior.PatternColorIndex = xlAutomatic.ThemeColor = xlThemeColorLight2"
Else
themcouleurD = "Selection.FormatConditions(1).Interior.PatternColorIndex = xlAutomatic.ThemeColor = xlThemeColorAccent" & codcouleurD - 4
End If

en fait cette macro insere dans une variable les codes pour la mise en forme de la mfc qui donne le code ci dessous

Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=""D""", Formula2:="=""D+++"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With themcouleurD

End With
Selection.FormatConditions(1).StopIfTrue = False


et cela ne fonctionne pas
je ne dois pas pouvoir faire ainsi

je joins à tout hasard mon fichier
si quelqu'un a une idée ou une première piste ou peut etre besoin de plus d'explication

Merci d'avance

Denis ROUSSEL
 

Pièces jointes

  • livret modele.xlsm
    91.3 KB · Affichages: 48

Bebere

XLDnaute Barbatruc
Re : couleur et mfc en vba avec variable

bonjour Droussel,le forum

ce code devrait suffire

Code:
Public Sub CouleurCel()

SansCouleurCel
i = Range("Menu!I15")

    With Sheets("livret")
        Select Case i
        Case 1
            For Each cel In .Range("c7:c250")
                cel.Interior.ColorIndex = xlNone
            Next cel

        Case 2 'fond
            For Each cel In .Range("c7:c250")
                If Left(cel, 1) = "A" Then cel.Interior.ColorIndex = Range("tables!G5")
                If Left(cel, 1) = "B" Then cel.Interior.ColorIndex = Range("tables!G4")
                If Left(cel, 1) = "C" Then cel.Interior.ColorIndex = Range("tables!G3")
                If Left(cel, 1) = "D" Then cel.Interior.ColorIndex = Range("tables!G2")
                If cel = "" Then cel.Interior.ColorIndex = xlNone
            Next cel

        Case 3 'lettre
            For Each cel In .Range("c7:c250")
                If Left(cel, 1) = "A" Then cel.Font.ColorIndex = Range("tables!G5")
                If Left(cel, 1) = "B" Then cel.Font.ColorIndex = Range("tables!G4")
                If Left(cel, 1) = "C" Then cel.Font.ColorIndex = Range("tables!G3")
                If Left(cel, 1) = "D" Then cel.Font.ColorIndex = Range("tables!G2")
                If cel = "" Then cel.Font.ColorIndex = xlAutomatic
            Next cel

        End Select

    End With
End Sub

Public Sub SansCouleurCel()

    With Sheets("livret")
        For Each cel In .Range("c7:c250")
            cel.Interior.ColorIndex = xlNone
            cel.Font.ColorIndex = xlAutomatic
        Next cel
    End With
 

mutzik

XLDnaute Barbatruc
Re : couleur et mfc en vba avec variable

Bonjour,

si tu connais la note et la couleur associée, tu peux faire un tri ou un tableau qui va te faire une synthèse de toutes les notes par matière, élève, classe ...
pas besoin de faire des choses compliquées quand on peut faire simple, mais il faudrait revoir le classeur ... et la facon d'entrer des notes
 
Dernière édition:

Droussel

XLDnaute Occasionnel
Re : couleur et mfc en vba avec variable

merci bebere

c'est fantastique, precis clair et concis
j'ai fait un grand pas en avant dans la prog vba
j'ai testé ça marche nickel

si j'ai bien compris je n'ai plus besoin de MFC mais il faut que je lance la macro a chaque changement d'eleve (en la declenchant automatiquement avec le formulaire de choix par exemple)

et si j'ai bien compris également je ne suis plus bloqué par un nombre de couleur restreint puisque la macro recopie purement et simplement les couleurs définies sur l'onglet tables

merci encore de ta réponse rapide

D.ROUSSEL
 

Bebere

XLDnaute Barbatruc
Re : couleur et mfc en vba avec variable

Droussel
effectivement plus besoin de mfc
pour les couleurs tu as bien compris
si tu en dis un peu plus sur la manière d'entrer les données ,çà peut se faire par évènement feuille
selectionchange par exemple .Supposition,tu entres les données dans la colonne C et après c'est recopié dans une colonne à droite en rapport avec le nom
 

Droussel

XLDnaute Occasionnel
Re : couleur et mfc en vba avec variable

bonsoir

Merci pour les explications
finalement j'ai fait un call de la macro dans les autres macros ou j'en avais besoin

Par contre je me suis rendu compte d'un truc bizarre que je n'ai pas vraiement compris
dans un premier temps j'ai supprimer mon code dans la feuilles tables et j'ai colorié les cellules par le menu format
ta macro ne fonctionnait plus

lorsque je colorie les cellules avec la commande "ActiveCell.Interior.ColorIndex" ta macro fonctionne à nouveau !

Autre question : pourquoi on met "public" devant les macros : pour que les variables soient vus par toutes les macros du classeur ?

merci de ta réponse

Denis
 

Bebere

XLDnaute Barbatruc
Re : couleur et mfc en vba avec variable

bonjour Droussel
interior.colorindex(en rapport avec format) ce n'est pas la même chose que couleur mfc(supprimer mfc)
tu as bien compris la portée de public,idem pour appel de macro(procédure)
 

Discussions similaires

Réponses
7
Affichages
371

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou