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
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
A voir également:
- Condition date vba
- Vba date du jour - Forum Excel
- Erreur 1004 vba ✓ - Forum VB / VBA
- Iphone 14 date de sortie - Guide
- Excel condition couleur - Guide
- Find vba - Astuces et Solutions
2 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
21 févr. 2017 à 19:05
21 févr. 2017 à 19:05
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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
22 févr. 2017 à 14:38
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
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
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
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
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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
22 févr. 2017 à 18:25
22 févr. 2017 à 18:25
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.
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
22 févr. 2017 à 18:46
Oooh oui sa fonctionne très très bien.
Je vous remercie énormément.
Je vous remercie énormément.
22 févr. 2017 à 11:30
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.