Colorer des lignes en f(d'un écart de jour)

Bonjour,

Petit paragraphe pour contextualiser un peu :

Je suis étudiant en alternance dans une régie d'eau et d'assainissement, j'ai pour mission de développer un outil afin de faciliter saisie/exploitation de données issues de relevés hebdomadaires par des agents sur les ouvrages d'eau potable tel que des captages, réservoirs ou encore des forages donc jusqu'à maintenant j'ai réussi à m'en sortir, malgré mes lacunes en codage (en effet je débute totalement), j'ai fait une première version dans laquelle je voulais regrouper tous les ouvrages, mais le fichier commençait "à peser" l'ouverture devenait lente (environ 30 secondes alors que seulement 4 étaient formatés, malgré un codage qui fonctionne) du coup, j'ai testé une seconde option qui consiste à scinder en différents classeurs, un principal (menu ou accueil) et les autres, un par commune où des ouvrages sont présents, en les faisant interagir entre eux jusqu'ici tout va bien sauf que je bloque, ci-joint le fichier simplifié pour expliquer mon problème.

Alors c'est le classeur principal, il aura une image représentant le territoire de la communauté de communes des formes avec nom de commune + lien hypertexte pour ouvrir le classeur correspondant pour saisir les données relevées. Ensuite sur sa droite, mon casse-tête, sur les colonnes N à S.

Colonne N : Nom de la commune

Colonne O : Nom de l'ouvrage

Colonne P : écart de jour entre la date du jour (=AUJOURDHUI()) et la date du dernier relevé

Colonne Q : date du dernier relevé

Colonne R : date du prochain relevé (=Q*+7)

Colonne S (sera cachée) : date du dernier relevé envoyé depuis les classeurs "annexes" correspondant à chaque ouvrages (à l'activation de la feuille la valeur S est copié dans Q)

Donc pour le moment, je ne travaille que sur 4 ouvrages pour me familiariser avec les codes et trouver les bons avant de les dupliquer, avec ce fichier je suis en mode bricolage vu que le code s'active quand la feuille1 s'active, pour mes tests je change manuellement mes valeurs dans S, je vais sur feuil2 puis revient sur feuil1 ^^

Je veux que pour chaque ligne sur les colonnes de N à R une couleur soit attribuée en fonction de sa valeur sur la colonne Q :

<6 = bleu

7;8 = vert

>9 = rouge

Donc j'ai testé ceci :

Private Sub Worksheet_Activate()

'reservoir beaulieu

Range("S2").Select

Selection.Copy

Range("Q2").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

If Range("P2").Value > 8 Then

Range("N2:R2").Select

Selection.Interior.Color = RGB(237, 55, 55)

End If

If Range("P2").Value < 7 Then

Range("N2:R2").Select

Selection.Interior.Color = RGB(122, 222, 233)

End If

If Range("P2").Value = 8 Then

Range("N2:R2").Select

Selection.Interior.Color = RGB(99, 208, 82)

End If

If Range("P2").Value = 7 Then

Range("N2:R2").Select

Selection.Interior.Color = RGB(99, 208, 82)

End If

Calculate

End Sub

Voici le code pour ma première ligne,il fonctionne mais j'aimerai faire quelque chose de plus simple car tout ça pour un seul ouvrage quand j'en aurai 50, j'ai peur que ça soit trop lourd et pas forcément très pertinent si quelque chose plus simple existe.

Voilà je suis preneur de tout les conseils, si vous me conseillez un code je serai ravi d'avoir un commentaire un peu détaillé sur les "fonctions" utilisées, en effet je ne suis pas là pour faire un copier/coller puis torcher le truc, non je veux comprendre ce que je vais écrire.

Merci d'avance pour ceux qui prendront le temps de lire mon pavé

Au plaisir de vous lire !

18testalerte.xlsm (16.43 Ko)

Bonjour,

pourquoi pas une simple MFC pour tes couleurs ?

Tant de cellules que ça concernées ?

eric

Ça fonctionnerait si je cherchais à modifier la couleur d'une seule cellule, ici j'aimerai mettre en forme plusieurs cellules sur la même ligne en fonction d'une seule, après j'ai essayé avec une MFC, ça fonctionnait pour les cellules de la colonne P, mais je ne sais pas faire pour mettre en forme les voisines

Un peu de lecture alors : http://www.mdf-xlpages.com/modules/smartsection/item.php?itemid=62 Références Relatives & Absolues

Bonjour, merci mais je suis désolé je ne comprend pas trop, l'utilité des références relatives et absolue parce que les MFC se font sur les cellules d'après leur propre valeur ?! Et ici c'est mettre en forme des cellules (texte,date,nombre) en fonction d'une seule

Chabson a écrit :

Bonjour, merci mais je suis désolé je ne comprend pas trop, l'utilité des références relatives et absolue parce que les MFC se font sur les cellules d'après leur propre valeur ?! Et ici c'est mettre en forme des cellules (texte,date,nombre) en fonction d'une seule

Bonjour,

Je n'ai pas lu le reste (encore) mais ceci est faux !

On doit considérer que le mode normal de mise en place d'une MFC est par formule !

Le reste n'est que soit simplification introduite par Microsoft, qui dispense de formuler dans les cas simples, soit des effets particuliers qui peuvent être intéressants bien que généralement limités, mais dans des cas particuliers...

Dans ce contexte, le type de référence est primordial dans une formule conditionnelle (rappelons qu'une formule destinée à définir les conditions d'application d'une MFC est analogue à une formule utilisant une fonction SI mais dont on ne formulerait que la condition [sans le SI], les membres valeursivrai et valeursifaux n'ayant pas à être formulés car traduits par application ou non de la MFC).

Cordialement.

Re !

Il pourrait être utile d'écrire ton code en ce que j'appellerai volontiers VBA normal (opposé au galimatias enregistré ) pour se familiariser un peu avec des instructions VBA que l'enregistreur est incapable de reproduire car elles ne décrivent aucun déplacement ou mouvement...

Mais le problème lui-même relève de MFC standard...

Cordialement.

Bonjour,

je suis désolé je ne comprend pas trop, l'utilité des références relatives et absolue parce que les MFC se font sur les cellules d'après leur propre valeur ?!

Une MFC par formule se réfère à ce qui est indiqué dans la formule, encore heureux.

Donc si tu indiques une colonne absolue elle se référera à quoi ?

eric

Re ! Salut Eric !

A titre purement didactique, ta procédure (sous réserve d'info manquante sur l'alimentation de la colonne S, mais ce n'est pas l'objet...). L'évènement Activate est a-priori mal choisi, on basculera donc sur Change, et on sera sélectif...

[Mais il reste qu'une MFC est à privilégier...]

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim clr, n%
    If Target.Column <> 19 Or Target.Row = 1 Or Target = "" Then Exit Sub
    n = Target.Row
    Me.Range("Q" & n) = Target
    clr = Array(RGB(122, 122, 233), RGB(99, 208, 82), RGB(237, 55, 55))
    With Me.Range("N" & n).Resize(, 5)
        Select Case Me.Range("P" & n).Value
            Case Is < 7: .Interior.Color = clr(0)
            Case 7, 8: .Interior.Color = clr(1)
            Case Is > 8: .Interior.Color = clr(2)
        End Select
    End With
End Sub

Cela change un peu de l'enregistreur... Note aussi que pour comprendre ce qu'on écrit quand on code, on indente, cela permet de lire sans effort...

Cordialement.

Bonjour la Compagnie,

Chabson a écrit :

Bonjour, merci mais je suis désolé je ne comprend pas trop, l'utilité des références relatives et absolue parce que les MFC se font sur les cellules d'après leur propre valeur ?! Et ici c'est mettre en forme des cellules (texte,date,nombre) en fonction d'une seule

étudie ces 2 MFC pour comprendre ...

18mfc-relatif.xlsx (38.60 Ko)

bonjour

macro a mettre dans un Module

a tester

Sub TestCouleur()
'reservoir beaulieu
Application.ScreenUpdating = False
   For L = 2 To Range("N" & Rows.Count).End(xlUp).Row
    Range("S" & L).Copy
    Range("Q" & L).PasteSpecial xlPasteValues
      Select Case Range("P" & L).Value
         Case Is < 7
            Range("N" & L & ":R" & L).Interior.Color = RGB(122, 222, 233)
         Case 7, 8
            Range("N" & L & ":R" & L).Interior.Color = RGB(99, 208, 82)
         Case Is > 8
            Range("N" & L & ":R" & L).Interior.Color = RGB(237, 55, 55)
      End Select
   Next
 Application.CutCopyMode = False
End Sub

A+

Maurice

mais ceci est faux !

C'est bon j'ai compris ! Je ne savais pas que l'on pouvait mettre en forme à l'aide de formules, j'utilisais les règles prédéfinies alors que j'aurai du aller dans "nouvelle règle" et choisir "utiliser une formule pour déterminer quelles cellules le format sera appliqué", d'où l'importance de la référence absolue !

Il pourrait être utile d'écrire ton code en ce que j'appellerai volontiers VBA normal (opposé au galimatias enregistré )

Effectivement je bidouille en recopiant des enregistrement sur une autre feuille pour arriver à mes fins ^^ mais comme je l'ai dit je suis totalement débutant dans le domaine et livré à moi même, c'est pourquoi j'ai choisi de m'inscrire sur ce forum le code que tu me montres, je suis absolument largué sur 60% des "mots" ^^'

En tout cas merci beaucoup à vous, effectivement pas besoin de s'embêter avec du VBA pour ça !

PS : Question pratique du forum, donc je vais valider comme quoi j'ai eu ma réponse mais si par la suite j'ai d'autres questions est ce que je reprend ce sujet que je modifie ou bien je peux en créer un nouveau ?

Démarrer un nouveau topic, un ancien avec plusieurs échanges est peu lu.

eric

Rechercher des sujets similaires à "colorer lignes ecart jour"