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
- Excel cellule couleur si condition texte - Guide
- Publipostage date en anglais ✓ - Forum Excel
- Publipostage date inversée ✓ - Forum Word
- Erreur 1004 vba ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
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
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 776
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 776
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.