Condition sur des dates
Résolu
Jono92600
Messages postés
76
Date d'inscription
Statut
Membre
Dernière intervention
-
Jono92600 Messages postés 76 Date d'inscription Statut Membre Dernière intervention -
Jono92600 Messages postés 76 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Condition date vba
- Excel cellule couleur si condition texte - Guide
- Airpods 3 date de sortie - Guide
- Jm date désabonnement - Forum Gmail
- Trier par date excel - Guide
- Jm date avis - Forum Consommation & Internet
2 réponses
Bonjour,
Par exemple :
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
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
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
Avec ce code :
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.
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.
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.