XL 2010 Différence de date ( Résolu )

Kael_88

XLDnaute Occasionnel
Le Forum,

mon petit problème se trouve au niveau des dates dans un tableau.

à l'ouverture du Fichier,
il faudrait que si une date dans la cellule colonne G ou K est présente et que :
si celle ci se trouve entre 18 et 24 mois de la date d'aujourd'hui, il écrive "à faire" dans la celulle colonne C,
et si cette date est supérieur à 24 mois, il écrit "Suspendu" en rouge dans la celulle colonne C.

Cordialement
 

Pièces jointes

  • date.xlsm
    8.3 KB · Affichages: 30

job75

XLDnaute Barbatruc
Bonjour Kael_88, johan,

En C2 à tirer vers le bas :
Code:
=SIERREUR(REPT("à faire";OU((AUJOURDHUI()>=MOIS.DECALER(G2;6))*(AUJOURDHUI()<=MOIS.DECALER(G2;24));(AUJOURDHUI()>=MOIS.DECALER(K2;6))*(AUJOURDHUI()<=MOIS.DECALER(K2;24))));"")&SIERREUR(REPT("suspendu";OU(ESTNUM(G2)*(AUJOURDHUI()>MOIS.DECALER(G2;24));ESTNUM(K2)*(AUJOURDHUI()>MOIS.DECALER(K2;24))));"")
Les SIERREUR sont nécessaires s'il peut y avoir des textes en colonnes G ou K.

Pour la question de johan : dans ce cas il y aura les 2 textes édités, on verra donc l'erreur.

Pour la couleur rouge de "suspendu" : utiliser une MFC, c'est facile.

A+
 

job75

XLDnaute Barbatruc
Re,

Bon s'il peut y avoir des textes en colonnes G ou K cette formule est préférable :
Code:
=REPT("à faire";OU(SI(ESTNUM(G2);(AUJOURDHUI()>=MOIS.DECALER(G2;6))*(AUJOURDHUI()<=MOIS.DECALER(G2;24)));SI(ESTNUM(K2);(AUJOURDHUI()>=MOIS.DECALER(K2;6))*(AUJOURDHUI()<=MOIS.DECALER(K2;24)))))&REPT("suspendu";OU(SI(ESTNUM(G2);AUJOURDHUI()>MOIS.DECALER(G2;24));SI(ESTNUM(K2);AUJOURDHUI()>MOIS.DECALER(K2;24))))
A+
 

Kael_88

XLDnaute Occasionnel
le forum,@Johan ,@job75 ,

merci pour ces réponses tout a fait correct, par contre serait-il possible de le faire en VBA,
sachant que les colonnes sont toujours G et K pour un résultat en C, mais en évitant les formules.

Ps: j'allais oublier, si pas de date en G et en K écrire en Colonne C "Suspendu"Comme si la période était supérieur à 24 Mois

merci

Cordialement
 
Dernière édition:

job75

XLDnaute Barbatruc
Re

Puisque la formule va bien et qu'elle est "relativement" simple, inutile de se casser la tête, utilisons-la :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With [A1].CurrentRegion
    If .Rows.Count = 1 Then Exit Sub
    Application.EnableEvents = False 'désactive les évènements
    With .Columns(3).Offset(1).Resize(.Rows.Count - 1)
        .Formula = "=REPT(""à faire"",OR(IF(ISNUMBER(G2),(TODAY()>=EDATE(G2,6))*(TODAY()<=EDATE(G2,24))),IF(ISNUMBER(K2),(TODAY()>=EDATE(K2,6))*(TODAY()<=EDATE(K2,24)))))" & _
            "&REPT(""suspendu"",OR(IF(ISNUMBER(G2),TODAY()>EDATE(G2,24)),IF(ISNUMBER(K2),TODAY()>EDATE(K2,24)),NOT(ISNUMBER(G2))*NOT(ISNUMBER(K2))))"
        .Value = .Value 'supprime les formules
    End With
    Application.EnableEvents = True 'réactive les évènements
End With
End Sub
La formule a été complétée compte tenu de la nouvelle demande du post précédent.

Fichier joint.

A+
 

Pièces jointes

  • date(1).xlsm
    21.2 KB · Affichages: 15

Discussions similaires

Réponses
11
Affichages
504

Statistiques des forums

Discussions
312 081
Messages
2 085 157
Membres
102 798
dernier inscrit
Choky13