Supprimer couleur dernière ligne du mois sans MFC
Me voici revenu avec un autre "peti souci" mais qui ne peut se voir que le lendemain du dernier jour du mois.
Quelqu'un m'a fait une macro dans ThisWorkbook qui est celle ci-dessous.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 'La Macro COLORISE ne sert plus (mise en commentaires)
Dim NombreJour As Integer
Dim Ladate As Date
Dim MoisSuivant As String
Dim Plage As Range
Dim Cel As Range
Dim F As String
Dim I As Integer
Dim J As Integer
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
' On recherche si la page est surveillée
If IsDate("1/" & Sh.Name) Then 'plus simple non ???
' Calcul du nombre de jour dans le mois indiqué par le nom de la feuille
NombreJour = Day(DateAdd("m", 1, DateValue(Sh.Name)) - 1)
If Target.Row - 5 > Day(Date) Then
Beep
MsgBox "PAS LE BON JOUR"
Target = ""
Range(Cells(Target.Row, 1), Cells(Target.Row, 7)).Interior.ColorIndex = 8
Else
' Surveille la plage du 1er au dernier jours du mois
If Not Intersect(Range("B6:C" & 5 + NombreJour), Target) Is Nothing Then
' Reconstruit la date de fonction du nom de la feuille et du numéro de ligne sélectionnée
Ladate = DateSerial(Split(Sh.Name, " ")(1), Month(DateValue(Sh.Name)), Target.Row - 5)
' Si la colonne B et la colonne C est vide on efface la date
Range("A" & Target.Row) = IIf(Range("B" & Target.Row) & Range("C" & Target.Row) = "", "", Ladate)
If Range("A" & Target.Row) = "" Then Cells(Target.Row, 1).Resize(, 7).Interior.ColorIndex = 8
' si la ligne modifiée est la dernière du mois et que la colonne est la C
If Target.Row = NombreJour + 5 And Target.Column = 3 Then
' On construit le nom de la feuille du mois suivant
MoisSuivant = MonthName(Month(DateAdd("m", 1, DateValue(Sh.Name)))) & " " & Year(DateAdd("m", 1, DateValue(Sh.Name)))
' On va vérifier si la feuille existe
If FeuilleExiste(MoisSuivant) = False Then Exit Sub
' La feuille existe
With Sheets(MoisSuivant)
'On la rend visible
.Visible = xlSheetVisible
' On masque celle que l'on vient de finir
ActiveSheet.Visible = xlSheetHidden
' et on la sélectionne
.Select
End With
End If
End If
If Range("A" & Target.Row) <> "" Then
Application.ScreenUpdating = False
Set Plage = Range(Cells(6, 1), Cells(6 + NombreJour, 1)).Resize(, 7)
'mémorise le formatage de la colonne A puis passe la colonne A au format "Standard" pour avoir des valeurs de type Long
'F = Plage.Columns(1).NumberFormat 'Si cette ligne de macro ne fonctionne pas appliquer la ligne ci-dessous
If IsNull(Plage.Columns(1).NumberFormat) Then F = "dddd dd mmmm yyyy" Else F = Plage.Columns(1).NumberFormat
Plage.Columns(1).NumberFormat = "General"
'effectue la recherche de la date en type Long sur la colonne A
Set Cel = Plage.Columns(1).Find(CLng(Date), , xlValues, xlWhole)
'puis rétabli le format
Plage.Columns(1).NumberFormat = F
Plage.Interior.ColorIndex = 8
'si trouvée, mets la plage au fond 8 puis colore la ligne du jour
If Not Cel Is Nothing Then
Range(Cells(Cel.Row, 1), Cells(Cel.Row, Plage.Columns.Count)).Interior.ColorIndex = 17
J = Cel.Row - 1
End If
If J = 0 Then J = Plage.Rows.Count + 6
'colore ensuite les cellules en fonction du jour
For I = 6 To J
If Cells(I, 1).Value <> "" Then
If Application.CountIf(Sheets("Menu").Range("JOursFériés"), Range("A" & I)) > 0 Or Weekday(Range("A" & I), vbMonday) > 5 Then
Range("A" & I & ":G" & I).Interior.ColorIndex = 38
Else
Range("A" & I).Interior.ColorIndex = 15
Range("B" & I).Interior.ColorIndex = 6
Range("C" & I).Interior.ColorIndex = 4
Range("D" & I & ":G" & I).Interior.ColorIndex = 43
End If
End If
Next I
Application.ScreenUpdating = True
End If
End If
End If
Application.EnableEvents = True
End Sub
Ce matin c'est passé automatiquement au 1er mars la dernière ligne de février (ligne 33) reste en couleur (interior color 17)
Pourrait-on faire la ou les modifs pour que les couleurs des colonnes A =15, B = 6, C =4 puis D à G = 43 retrouvent leurs couleurs.
Merci à vous pour vos éventuels retours
Cordialement
Fichier toto joint
Pour être "réglo" j'ai posté aussi sur autre forum pour multiplier les chances
Bonjour Al87 le forum
C'est très bien d'être "réglo", merci pour nous.
Si tu n'as pas de réponse, tu le rediras je te le ferai.
a+
Papou
Bonjour Al87 le forum
C'est très bien d'être "réglo", merci pour nous.
Si tu n'as pas de réponse, tu le rediras je te le ferai.
a+
Papou
Bonjour paritec
Oui je suis réglo car je n'aimerais pas qu'on me le fasse.
Tu peux y aller car ça me tourture l'esprit. C'est assez compliquer. Ça dépend des mois en l'occurence février de cette année s'arrête au 28 celui de l'année prochaine au 29.
Des mois c'est 30 jours (ligne 35) d'autres 31 jours (ligne 36)
Ça peut arriver que ça tombe sur un jour férié...
Je vais mettre sur l'autre forum que c'est résolu.Si tu peux y arriver tu feras un heureux.
Prend ton temps.
Merci à toi
Cordialement
Re bonjour Al87 le forum
je viens d'ouvrir ton fichier et une chose me chagrine, tu parles de nombre de jours qui change, mais tu as dans ta macro
NombreJour = Day(DateAdd("m", 1, DateValue(Sh.Name)) - 1)
c'est bien destiné à trouver le nombre de jours du mois!!!!!!!
Je vais retourner voir ton fichier et essayer de comprendre ce que tu veux, car pour moi c'est pas clair et je découvre le fichier
a+
Papou
Re al87 le forum
c'est quoi toutes tes lignes N°3 avec Vendredi 1 septembre 2006 ???????????????????????????
Nous sommes en 2019 au cas ou tu ne le saurais pas???
a+
Papou
Re-paritec
Exact c'est bien pour trouver le nombre de jours. Ce fichier date de 2006. J'ai fait des améliorations à la marge depuis.
En ce qui concerne le vendredi 1er septembe c'est depuis quand je marche après mon opération à coeur ouvert de juin 2006.
C'est très simple mais comme je m'exprime mal... et puis moi et le VBA!!!
Comme tu peux le constater le 28 février reste en mauve (couleur 17) alors qu'il doit "partir" et passer au 1er mars en mauve et la ligne du 28 février doit retrouver ses couleurs d'origne.
C'est beaucoup trop compliqué pour moi
Je suis sous EXCEL 2003
Bon courage
Cordialement
Bonjour AL87 le forum
je n'ai pas voulu chercher toutes les conditions de ta macro, alors j'ai rajouté une macro qui ne gère que les dernières lignes
maintenant si tu veux m'expliquer le pourquoi de ta macro, je regarderai de plus près.
là tu peux tester tu changes la date de ton PC au 28/02/2019
tu mets en gris la ligne du 28 et ensuite tu rechanges la date et tu passes au 02/03/2019 et tu verras, et tu me redis
a+
Papou
Re paritec
Super un GRAND merci
Il reste les samedi dimache (interior Color 38)
Et jours fériés (interior Color 38) voir tableau page MENU
Après ça sera nickel
Mais alors quel boulot
A+
Fichier toto V001
Ré bonjour al87 le forum
Mais explique le pourquoi de toutes ces couleurs ??
Je pense que la macro est bien compliqué pour pas grand chose!!!
Donne moi toutes les conditions te je m’en occupe !!!
Autrement pour les samedi et dimanche et fériés, tu veux colorier systématiquement tous les dimanches samedi et fériés de toutes les feuilles ??? Et une fois coloriées les cellules doivent rester en couleur????
Merci de répondre précisément que je te fasse l’intégralité
A plus
Papou
Re-paritec
C'est exactement ce que tu viens de décrire que je veux...si c'est possible
Je veux différencier les samedi dimanche et jours fériés des autres jours de la semaine
"Je pense que la macro est bien compliqué pour pas grand chose!!!"...TU AS RAISON mais un "vieux maniaque" restera toujours un "vieux maniaque" !!!
"Et une fois coloriées les cellules doivent rester en couleur????" => Oui
A+
Re Al87 le forum
Mais donne moi toutes les conditions et je vais regarder pour simplifié ta macro
Si tu ne me donnes pas toutes tes conditions je ne pourrai pas le faire
le fait d'être maniaque n'a rien a voir moi aussi j'aime les choses bien faites, mais bien ne signifie pas 1 km de macro pour une action qui apparemment est hyper simple vu le fichier !!!
Colorier une ligne chaque fois qu'on l'ajoute et dire pas bonne date si la ligne supérieure n'est pas la date-1
et colorier en gris le dernier jour de la liste , mais il y a quoi d'autre ????????????????????????
a+
Papou
Re paritec
Le matin lorsque j'ouvre mon fichier ça affiche 3 (mis 3 dans macro) et ça colorie en interior color 17 et si j'ouvre le fichier après 12:00 ça affiche 3 pour l'après-midi.
Le lendemain cette ligne "reprend ses couleurs" c'est à dire 15 6 4 43 43 43 43 aisi de suite mais ça peut-être un samedi comme aujourd'hui un dimanche ou un jour férié et dans ce cas interior color est 38.
"colorier en gris le dernier jour de la liste" tu veux dire colonne A?
Je pense que c'est toutes les conditions.
Ne t'embête pas trop quand même car ce que tu as fait fonctionne très bien c'est juste si dernier jour du mois tombe un samedi dimanche ou jour férie dans la macro que tu as fait
A+
Re bonjour Al87 le forum
ton fichier en retour avec tes samedi dimanche et jours fériés en 38
j'ai colorié que la colonne A en 38 j'espère que c’est cela que tu souhaitais
a+
Papou
Re paritec
C'est exactement ça sauf que c'est la ligne 7 entière qui doit être en interior color 17 et non en 38.
Demain la ligne 7 passera en 38
Demain la ligne 8 sera en 17 et lundi la ligne 8 passera en 38 après couleurs normales
On le tient presque
A+
Bonsoir AL87 le forum
Est-ce que tu ne te moquerais pas un peu de moi??????
aujourd'hui un dimanche ou un jour férié et dans ce cas interior color est 38.
C'est qui, qui a écrit cela ???? Regarde ton avant dernier post.
Pour la ligne complète OK, mais c'est écrit ou que c'est toute la ligne qu'il faut colorier???
je te réclame des explications et je n'ai que des bribes et ensuite bah cela ne va pas !!!!!
j'aime beaucoup!!!
bon alors les dimanches samedi et fériés c'est en 17 maintenant???
j'ai écrit aussi :
Et une fois coloriées les cellules doivent rester en couleur????
Toutes les cellules ou lignes qui sont des dimanches samedi et fériés restent dans la couleur 17 ???
à te relire
a+
Papou
Re paritec mal expliqué
Non je me moque JAMAIS surtout pas mais je m'explique très mal tout vient de là
Ce que je voulais dire c'est que la ligne de ce jour ligne 7 doit être en 17 pour aujourd'hui (c'est à dire que 17 et 38 vont se chevaucher)
Demain elle passera en 38
Celle de demain ligne 8 passera en 17 (c'est à dire que 17 et 38 vont se chevaucher aussi) et après demain la ligne 8 passera en 38
Après couleurs normales
A+
Alors là on dépasse l’entendement, maintenant on va avoir des couleurs qui se chevauche??????
Bah là tu es trop fort pour moi , moi je suis trop con je ne sais pas ce que c’est que des couleurs chevauchées???
Je demande si les samedi dimanche est fériés doivent rester en couleur tu réponds oui, et maintenant je comprends que tu veux en fait colorier uniquement la dernière ligne affichée dans un mois donc dans les autres feuilles exemple le 01/01/2019 doit rester en gris et non en rose???
Bref tu t’exprimes mal alors pour arriver à comprendre???
Maintenant explications claires et précises avant que je ne fasse quoi que ce soit
Première explication couleur chevauchées là ??????????????
C’est où 17 ou 38 mais pas les deux.
A plus
Papou
Re paritec
Avant de continuer je vais faire tourner le programme et je reviendrais car on ne se comprend plus.
Exemple:
Le 31 mars 2019 sera un dimanche donc ça passera le 1er avril en couleur 17 et la ligne 36 du mois précédent (dernière ligne du mois de mars devra rester en couleur 38
Je reviendrais en fin de mois pour voir si ça le fait.
Pour ce que tu a fait au début fonctionne très bien car la dernière ligne de février est un jeudi donc couleurs normales.
Un GRAND MERCI et VRAIMENT TOUTES MES EXCUSES
INCOMPRÉHENSION TOTALE
Bonne fin de soirée
Re paritec
J'ai "jonglé" un peu avec ta macro et fait un test ça a l'air de fonctionner. J'ai gardé mon ancienne "structure" .
J'ai encore un petit souci j'ai une ligne 37 dans le mois qui ne veut pas se "faire "supprimer"!!!
Elle revient toujours à l'enregistrement
Encore toutes mes excuses pour le temps passé à mon "petit" souci" mais j'y tenais!!!
Bonne fin de soirée à toi et au forum
Cordialement
Bonjour al87 le forum
J'ai "jonglé" un peu avec ta macro
bah je ne sais pas ce que tu as pu faire avec, car elle est faite pour une chose bien précise et tu n'es pas fichu d'expliquer correctement ton souhait.
J'ai encore un petit souci j'ai une ligne 37 dans le mois qui ne veut pas se "faire "supprimer"!!!
bah oui tu as un petit souci!!!!!
Moi mon souci est de ne toujours pas savoir ce que tu veux.
Ou alors ce que tu veux c'est simplement une seule ligne dans toutes tes feuilles, donc tu ne souhaites que seulement que la dernière ligne correspondant à la date du jour soit en 17
Mais est-ce que c'est bien cela que tu ne veux que une seule ligne dans toutes tes feuilles de coloriée??
a+
Papou