Douze Mises en formes conditionnelles

bonjour à tous

Comment je pourrai appliquer douze mises en formes conditionnelles suivant le fichier joint et que la valeur M15 puisse aussi bien se trouver en P15, ou bien en Q15 ou R15 ...jusqu'à AA15, avec des couleurs différentes

merci par avance pour votre aide

cordialement

mibri

2712-mfc.xls (16.50 Ko)

Bonjour,

Sous Excel 2003, il me semble que la limitation est de 3 MFC par cellule, donc il faudra obligatoirement passer par une macro qui va se lancer à chaque changement dans une des cellules concernées lors d'un évènement Worksheet_Change().

Par contre 12 je trouve cela beaucoup, tu es sûr que tu n'as aucun moyen de les simplifier et qu'il n'y en a pas qui font doublons ?

Cordialement,

Edit en voyant ton fichier :

Tu as besoin d'une MFC sur 12 cellules différentes (1 par mois) ou de 12 MFC sur ta plage de 12 cellules ? Ce n'est pas très clair ^^

Pourrais-tu étoffer un peu ton fichier exemple en mettant les couleurs à la main en fonction du critère de déclenchement choisi, pour chacun des cas possibles si tu as besoins de couleurs différentes stp ?

merci, Zirak pour ta réponse rapide, j'ai (je pense) éclairci un peu mon projet sur mon fichier, je te laisses le découvrir, je reste à ta disposition

cordialement

mibri

2312-mfc.xls (18.50 Ko)

Bonjour,

Et dans le cas où les 12 montants sont égaux à celui de M15, M15 prend toutes les couleurs de l'arc-en-ciel ?

A+

Bonjour

Non pas du tout, car la valeur en M15 se retrouvera toujours une seule fois dans la plage P15....AA15, mais il est nécessaire que je prévois l'extension des formules car je ne sais pas à l'avance ou cette valeur va se retrouver mensuellement

remerciements

mibri

Une solution parmi d'autres en utilisant l'évènement Worksheet.SelectionChange

2812-mfc-1.zip (9.95 Ko)

A+

merci Frangy pour ta réponse, c'est précisément ce que je cherchais à faire. Il faut maintenant que j'adapte cela à un fichier plus important. Peux tu me dire dans le code sous la "Feuil3(feuil1)"

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim i As Byte

Application.ScreenUpdating = False

Cells(15, 13).Interior.Pattern = xlNone

For i = 16 To 27

If Cells(15, i).Value = Cells(15, 13).Value Then

Cells(15, 13).Interior.Color = Cells(15, i).Interior.Color

Exit Sub

End If

Next i

End Sub

Si ce code va s'appliquer à toutes les saisies qui figureront dans la colonne M par exemple de M15 à M734

merci

mibri

bonjour

Frangy, je m'aperçois que je ne t'ai pas donné tous les éléments. En fait la fonction de M15 va devoir s'étendre de M15 à M734 c'est à dire (colonne 13, ligne 15) à (colonne 13, ligne 734)

En ce qui concerne la plage P15 ...AA15, elle s'étendra de la (colonne 16, ligne 15) à la (colonne 27, ligne 734)

j'aurais du t'indiquer ces éléments tout à l'heure...excuse moi

remerciements

mibri

C’est jouable mais ... Tu dois comprendre que la procédure est lancée à chaque fois que tu changes de sélection dans la feuille.

Actuellement, tel qu’il est conçu, le programme va examiner 12 cellules pour effectuer la comparaison avec M15.

Si tu fais la même opération de M15 à M734, tu vas effectuer systématiquement 720 * 12 = 8640 comparaisons. Dur, dur d’être un PC !

Tu peux peut-être raisonner différemment afin de cibler un changement dans ta feuille qui te permettrait de ne traiter que les données utiles ou, à la rigueur placer un bouton de rafraichissement.

A toi de voir.

En attendant, voici un exemple avec un rafraichissement systématique de toute la plage à chaque changement de sélection.

2612-mfc-2.zip (29.70 Ko)

A+

Frangy merci pour ta réponse.

l'exemple fonctionne très bien mais lorsque je traduit cela dans mon fichier ça ne marche pas.

J'ai copié une partie de mon fichier original ainsi que la mise à jour des codes que tu m'as fait parvenir ajoutés à ceux qui existent déja dans mon fichier. Je donne quelques explications complémentaires qui te permettront peut être de comprendre ce que j'explique à ma façon......

je suis navré de t'ennuyer à nouveau, à ta disposition

merci

mibri

2312-mfc-3.zip (18.66 Ko)

Pour commencer, 2 choses :

1) tu ne peux pas avoir 2 procédures évènementielles Worksheet.SelectionChange() dans la même feuille.

2) tu as une référence circulaire en W13.

=SI(ET(L13="A RAPPROCHER";U13=W$13);$X13;"")

Peux-tu expliquer ce que cette formule est censée retourner ?

A suivre ...

A+

la référence circulaire s'est faite au moment ou j'ai fait la copie d'une partie de mon fichier. Mai ce n'est pas le problème car sur le fichier original que j utilise la ref circulaire n'existe pas

"1) tu ne peux pas avoir 2 procédures évènementielles Worksheet.SelectionChange() dans la même feuille."

Est ce que ça signifie que je ne peux pas appliquer le projet que je t'ai fais parvenir ???

merci

Est ce que ça signifie que je ne peux pas appliquer le projet que je t'ai fais parvenir ???

Non, ça veut simplement dire que tu dois regrouper les traitements.

Essaie avec ce code (je ne peux pas le tester avec ton fichier).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
Dim j As Integer
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    If Target.Address = "$U$2" Then
        If Range("B737") <> "" Then
            Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
        Else
            Range("B737").Select
        End If
    End If
    Application.EnableEvents = True
    For j = 15 To 734
        Cells(j, 12).Interior.Pattern = xlNone
        For i = 25 To 36
            If Cells(j, i).Value = Cells(j, 12).Value Then
                Cells(j, 12).Interior.Color = Cells(j, i).Interior.Color
                Exit For
            End If
        Next i
    Next j
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

A+

J'ai bien compris mais je ne sais pas ce qu'il faut que je remplace ou que je complète ???

Par rapport à tous les codes que je t'ai envoyé ou faut il que je mette ceux que tu viens de m'adresser

merci

Dans le module Feuil1 (Feuil1), tu remplaces les 2 procédures Private Sub Worksheet_SelectionChange(ByVal Target As Range) par ma procédure.

A+

j'ai tenté de regrouper mon précédent code avec le tien je n'ai )plus de message d'erreur mai par contre il traduit ce code différemment, voir fichier joint

merci

1412mfc-4.zip (6.56 Ko)

je te signale que la fonction avec le code suivant ne marche plus :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim i As Byte

Dim j As Integer

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

Application.EnableEvents = False

If Target.Address = "$U$2" Then

If Range("B737") <> "" Then

Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select

Else

Range("B737").Select

End If

merci

Le fichier que tu m'as transmis n'a plus rien à voir avec les données initiales (les colonnes et les lignes à tester ne sont plus placées au même endroit). C'est sûr que ça va marcher moins bien !

De plus, si tu compares la valeur -17.1 et la valeur 17.1, il est évident qu'il n'y aura pas égalité (idem pour les 2 autres valeurs).

Si tu ne fais pas passer un fichier conforme, c'est tordu d'avance.

A+

Bonjour Frangy,

Bien reçu ton dernier message dans lequel tu dis :

1/-"si tu compares la valeur -17.1 et la valeur 17.1".........ceci est résolu, j'ai apporter des modifications à mon fichier

2/-bonne nouvelle ça marche "en partie :

Je te transmet la feuille sur laquelle nous travaillons, tu constatera que les écritures nov et décembre sont bien coloriées

par contre les cases vides dans la colonne débit sont toujours coloriées en vert alors qu'il ne devrait rien avoir....

- j'ai un suivi d'opérations a partir de la ligne 738. j'ai un bouton en U2 qui me renvoi automatiquement à la cellule qui doit supporter l'opération. A ce stade lorsque je clique sur U2 le curseur se positionne bien sur B738 mais je reste en haut du tableau.

remerciements

mibri

J'ai un petit problème car je ne suis pas autorisé à envoyer mon fichier il fait un peu plus 1 Mo

que me suggères tu ? car si je le réduit tu n'auras plus les mêmes correspondances avec les codes...

J'ai un petit problème car je ne suis pas autorisé à envoyer mon fichier il fait un peu plus 1 Mo

que me suggères tu ? car si je le réduit tu n'auras plus les mêmes correspondances avec les codes...

Je n’ai pas besoin de l’intégralité des données de la feuille. Il suffit d’avoir la structure avec un bon positionnement des données utiles, à savoir celles sur lesquelles on applique le traitement. Dans ton premier fichier, on comparait la colonne M avec les colonnes P à AA alors que dans ton dernier fichier, on demandait à comparer la colonne G avec la colonne T. Il faut arriver à définir clairement quelles sont les colonnes à comparer.

J'ai un bouton en U2 qui me renvoie automatiquement à la cellule qui doit supporter l'opération.

A ce stade, lorsque je clique sur U2 le curseur se positionne bien sur B738 mais je reste en haut du tableau.

Il faut déplacer la ligne qui contient l’instruction Application.ScreenUpdating = False
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
Dim j As Integer
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    If Target.Address = "$U$2" Then
        If Range("B737") <> "" Then
            Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
        Else
            Range("B737").Select
        End If
    End If
    Application.EnableEvents = True
    Application.ScreenUpdating = False
    For j = 15 To 734
        Cells(j, 12).Interior.Pattern = xlNone
        For i = 25 To 36
            If Cells(j, i).Value = Cells(j, 12).Value Then
                Cells(j, 12).Interior.Color = Cells(j, i).Interior.Color
                Exit For
            End If
        Next i
    Next j
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
 

A+

Rechercher des sujets similaires à "douze mises formes conditionnelles"