Condition sur des dates

Résolu/Fermé
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017 - Modifié par Jono92600 le 21/02/2017 à 15:50
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017 - 22 févr. 2017 à 18:46
Bonjour,

J'aimerai pouvoir mettre la condition suivante dans mon tableau.

Si la date de la colonne "F" est égale ou dépasse la date d'aujourd'hui de 7 jours alors
Colonne "G" = "En retard"

Si la date de la colonne "F" est égale ou dépasse la date d'aujourd'hui de 1 mois alors
Colonne "G" = "Critique"

Exemple :

For i = PremLig To DL

If Range("F" & i) <= Date + 7 Then '(Je ne sais pas si c'est le terme exacte)
Range("G" & i) = "En retard"
ElseIf Range("F" & i) <= 1 mois Then '(Je ne sais pas si c'est le terme exacte)
Range("G" & i) = "Critique"
End If

Next

End sub


Par avance merci.

Cordialement,




2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
21 févr. 2017 à 19:05
Bonjour,

Par exemple :
Option Explicit
Sub TestDesDates()
Const strPlageDesDates As String = "F2:F500"
Dim cel As Range

  For Each cel In ActiveSheet.Range(strPlageDesDates)
    If DateSerial(Year(Date), Month(Date) - 1, Day(Date)) >= _
          cel.Value Then
      cel.Offset(0, 1).Value = "Critique"
    ElseIf Date - 7 >= cel.Value Then
      cel.Offset(0, 1).Value = "En retard"
    End If
  Next cel

End Sub


0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
22 févr. 2017 à 11:30
Bonjour Patrice33740,

Je vous remercie de votre retour. Le code fonctionne maisj'ai des cellules vides.
je vous met ci-joint, le fichier avec le résultat.

https://www.cjoint.com/c/GBwkEpk3wiG

Par avance merci.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
22 févr. 2017 à 14:38
Bonjour,

Le problème vient du fait que certaines dates ne sont pas au format date mais au format texte. Pour voir ce genre d'anomalie, il suffit de mettre l'alignement horizontal de la colonne au format standard : les date s'alignent
à droite et les textes s'alignent à gauche.

Ne connaissant pas l'origine de cette anomalie, j'ai supposé, comme c'est souvent le cas, que les données ont été copiées depuis une autre source.
J'ai donc ajouté dans le code VBA une correction de cette anomalie pour éviter d'avoir à ressaisir les dates en question.

Ton fichier en retour :
https://www.cjoint.com/c/GBwnEXMyeiJ
0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
22 févr. 2017 à 17:04
Très bien merci.

Le code fonctionne parfaitement. Je voudrais rajouter une condition en plus.

Si la colonne "F" contient une date alors
la colonne "G" = FAIT

Mon code :

If DateSerial(Year(Date), Month(Date) - 1, Day(Date)) >= "" Then
cel.Offset(0, 2).Value = "Réalisé"
End if
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
22 févr. 2017 à 18:25
Avec ce code :
Option Explicit
Sub TestDesDates()
Const strPlageDesDates As String = "E3:E37"
Dim cel As Range

  For Each cel In ActiveSheet.Range(strPlageDesDates)
    'Corriger les dates saisies au format texte
    If IsDate(cel.Value) And VarType(cel.Value) <> vbDate Then
      cel.Value = CDate(cel.Value)
    End If
    ' Renseigner la colonne ETAT
    If IsDate(cel.Offset(0, 1).Value) Then
      cel.Offset(0, 2).Value = "Réalisé"
    ElseIf DateSerial(Year(Date), Month(Date) - 1, Day(Date)) >= cel.Value Then
      cel.Offset(0, 2).Value = "Critique"
    ElseIf Date - 7 >= cel.Value Then
      cel.Offset(0, 2).Value = "En retard"
    Else
      cel.Offset(0, 2).Value = "Dans les temps"
  End If
  Next cel

End Sub


Attention la ligne 15 n'est pas une nouvelle ligne, c'est la fin de la ligne 14, elles ne forment qu'un seule et même ligne.
0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
22 févr. 2017 à 18:46
Oooh oui sa fonctionne très très bien.

Je vous remercie énormément.
0