XL 2010 Couleur d'une mise en forme conditionnelle qui change a J+1

sebbbbb

XLDnaute Impliqué
Bonjour a toutes et tous

Je reviens vers vous avec un autre problème à vous soumettre.

Dans le cadre de mon activité, je souhaiterai faire une check list des activités a faire, notamment une mise a jour conditionnelle des emails envoyés

Ainsi je souhaiterai que lorsqu'un email soit envoyé le menu déroulant 'email : mise à jour quotidienne' soit mentionné avec 'oui' donc couleur verte.

Un fois que cela est fait je souhaiterai que la couleur redevienne 'rouge' a partir du jour N+1 00h00 afin d'attirer l'attention de l'utilisateur et lui faire comprendre qu'il doit envoyer une mise a jour et remettre en vert la mise a jour conditionnelle... et ainsi de suite à J+1

Celà vous semble t-il faisable :) ?

je vous joins tableau avec dejà la mise en forme et les mises en forme conditionnelles

1000 merci par avance
SEB
seb
 

Pièces jointes

  • Check list.xlsm
    29.6 KB · Affichages: 56

job75

XLDnaute Barbatruc
Bonjour sebbbbb, salut cher Patrick,

Dans le code de la feuille "CLVSI" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [E36]) Is Nothing And LCase([E36]) = "oui" _
  Then ThisWorkbook.Names.Add "DateOui", Format(Date, "d/m/yyyy") ', Visible:=False   'si l'on veut masquer le nom défini
End Sub
La macro crée le nom défini DateOui qui contient la date du jour où le "Oui" est entré.

On peut masquer ce nom défini si nécessaire.

Le code dans ThisWorkbook :
Code:
Private Sub Workbook_Open()
With Sheets("CLVSI")
  If Format(Date, "d/m/yyyy") <> CStr([DateOui]) And LCase(.[E36]) = "oui" Then .[E36] = "Non"
  If LCase(.[E36]) = "non" Then
    Application.Goto .[A35], True  'cadrage
    .[E36].Select
  Else
    Application.Goto .[A1], True  'cadrage
  End If
End With
End Sub
Edit : les dates sont sous forme de textes "j/m/aaaa" au cas où l'on changerait de calendrier (1900/1904).

Mettez la cellule E36 sur "Oui" et attendez le lendemain pour rouvrir le fichier...

Ou diminuez de 1 jour la valeur de DateOui pour tester tout de suite.

Fichier joint.

A+
 

Pièces jointes

  • Check list(1).xlsm
    35.2 KB · Affichages: 32
Dernière édition:

sebbbbb

XLDnaute Impliqué
Bonjour Job75
merci pour la réponse et ton aide.
Vu mes petites notions en VBA je ne suis pas sur d'avoir tout compris.
La PJ que tu m'a gentiment transférée est elle opérationnelle tout de suite ou dois-je entrer une date quelque part ?
pour faire le test ou dois je entrer la date diminuée de 1
en te remerciant par avance
seb
 

job75

XLDnaute Barbatruc
Re,

Il n'y a aucune date à entrer, pour faire le test : entrer d'abord "Oui" en E36 puis menu FORMULES => Gestionnaire de noms et diminuer la date dans la formule du nom.

Notez que j'ai légèrement modifié les macros ce matin à 08:11.

A+
 

sebbbbb

XLDnaute Impliqué
Cela me semble parfait...encore une fois :)
rien ne semble pouvoir t'arrêter. franchement cela m'impressionne !
une dernière requête stp : j'aimerai avoir la même fonction avec le menu déroulant de la cellule E37. Peux tu m'aider à modifier le VBA stp ?
tu verras j'ai apporté quelques modifs à la présentation du fichier.
merci beaucoup par avance
seb
 

Pièces jointes

  • Check list.xlsm
    26.9 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re,

Il faut 2 noms définis DateOui1 et DateOui2 avec les macros :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [E36]) Is Nothing And LCase([E36]) = "oui" _
  Then ThisWorkbook.Names.Add "DateOui1", Format(Date, "d/m/yyyy") ', Visible:=False   'si l'on veut masquer le nom défini
If Not Intersect(Target, [E37]) Is Nothing And LCase([E37]) = "oui" _
  Then ThisWorkbook.Names.Add "DateOui2", Format(Date, "d/m/yyyy") ', Visible:=False   'si l'on veut masquer le nom défini
End Sub
Code:
Private Sub Workbook_Open()
With Sheets("CLVSI")
  If Format(Date, "d/m/yyyy") <> CStr([DateOui1]) And LCase(.[E36]) = "oui" Then .[E36] = "Non"
  If Format(Date, "d/m/yyyy") <> CStr([DateOui2]) And LCase(.[E37]) = "oui" Then .[E37] = "Non"
  If LCase(.[E36]) = "non" Or LCase(.[E37]) = "non" Then
    Application.Goto .[A35], True  'cadrage
    IIf(LCase(.[E36]) = "non", [E36], [E37]).Select
  Else
    Application.Goto .[A1], True  'cadrage
  End If
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Check list(2).xlsm
    30.2 KB · Affichages: 30

sebbbbb

XLDnaute Impliqué
Mon cher job75
je suis toujours sur mon fichier que j'ai modifié en fonction des différents aléas de mon boulot.
j'ai ajouté quelques modif mais le hic c'est que les macro vba ne fonctionne plus. en fait j'ai ajouté plusieurs dates qui doivent redevenir de couleur rouge à J+1 (sous daily)
merci par avance pour ton aide Job75
seb
 

job75

XLDnaute Barbatruc
Bonjour sebbbbb,

Ah oui ce n'est pas banal ! Tout fonctionnait bien le 24 mai et aujourd'hui ça ne va pas !!!

Pour comprendre ce qui se passe exécutez sur un fichier vierge ces 2 macros :
Code:
Sub Test1()
ThisWorkbook.Names.Add "DateOui", "24/5/2017"
End Sub

Sub Test2()
ThisWorkbook.Names.Add "DateOui", "1/7/2017"
End Sub
La formule du nom défini créé par la 1ère macro est bien ="24/5/2017"

Mais avec la 2ème macro la formule devient =42742

La date est donc ici convertie en nombre, difficile d'expliquer le pourquoi.

Pour avoir toujours du texte il faut mettre ce texte entre guillemets (doublés) :
Code:
Sub Test3()
ThisWorkbook.Names.Add "DateOui", "=""1/7/2017"""
End Sub
Utilisez donc les 2 fichiers corrigés joints.

A+
 

Pièces jointes

  • Check list corrigé(1).xlsm
    35.3 KB · Affichages: 28
  • Check list corrigé(2).xlsm
    30.3 KB · Affichages: 29

sebbbbb

XLDnaute Impliqué
merci job75
en fait j'ai modifié mon fichier, je ne peux donc pas utiliser ceux proposés
y a til moyen de modifier directement le fichier en PJ de mon dernier mess (il y a maintenant 4 dates qui sont susceptibles d'être modifiées)
merci
seb
 

Pièces jointes

  • V14 - TEST1.xlsm
    2.5 MB · Affichages: 21

job75

XLDnaute Barbatruc
Re,

Vous avez créé les noms DateOui1 DateOui2 DateOui3 DateOui4, ça prouve que vous avez compris.

Appliquez à la macro Worksheet_Change les modifications des fichiers corrigés précédents.

Je ne vous aiderai pas davantage, d'autant que le VBA est protégé par mot de passe.

A+
 

Discussions similaires