Tester si une date est déjà passée ou non

  • Initiateur de la discussion Initiateur de la discussion Fab
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fab

Guest
Bonjour,
Une partie de ma macro doit tester des dates (se trouvant dans une colonne) pour savoir si elle sont déjà passées ou non.
Les dates déjà dépassées sont alors mises en évidence (grisée).
Mais, ça ne fonctionne pas (probablement des End If pas bien plaçés, j'ai essayé diverses combinaisons en vain)
Voici la partie du code concernée qui ne marche pas :

Sub auto_open()
'Macro exécuté à l'ouverture du fichier
Dim DateLimite As Date
Dim DelaiLimite
Dim k
Dim DateActuelle As Date
Dim Blanc


DateActuelle = Now


Sheets("ATTENTION").Select

' Colore en Gris les délais négatifs

For k = 3 To 25
' Test de la cellule selectionnée
Range("D" & k).Select
If Range("D" & k) = "" Then
Blanc = 0
Else
DateLimite = Range("D" & i).Value
DelaiLimite = (DateLimite - DateActuelle)
If (DelaiLimite < 0) Then
' Action
Range("D" & i).Select
Cell.Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
Else
Blanc = 0
End If
End If

Next k

Range("a1").Select
End Sub


Merci d'avance.
Fab
 
Salut "Fab" re le "FORUM"
je pense que ton problème vient du format de tes dates dans
DelaiLimite = (DateLimite - DateActuelle)'<--- il faut convertir en chiffre ces variables soit un truc du genre DateLimite =format(dateLimite,"00000")
DateActuelle=format(DateActuelle,"00000")
DelaiLimite=(DelaiLimite,"00000")
pour comparaison de numerics
Je pense je testerai plus tard
A+++
Jean Marie
 
Bonjour Fab, bonjour Jean-Marie, bonjour le Forum,

Fab, pourquoi n'utilises-tu pas la mise en forme conditionnelle plutôt que du VBA ? Ca me paraît beaucoup plus simple.

Tu mets en condition "La valeur de la cellule" "est inférieure à" "=AUJOURDHUI()"

A moins que tu ais une bonne raison que je n'ai pas saisie d'utiliser une macro.

Bonne journée.

José
 
Salut à tous et merci pour toutes ces suggestions.
Effectivement, je n'avais pas pensé aux formes conditionnelles. J'ai essayé, mais le problème est que le nombre de date dans le tableau est variable. Je lui définis donc toute une série de cellule pour la condition "si inférieur à la date d'aujourd'hui ...", mais toute les cellules sans date subissent alors cette condition.

Pour ma boucle, effectivement, la variable i était fausse, je l'ai remplacé par k. Ca ne suffit pas. J'ai changé l'approche :

Dim DateLimite As Date
Dim DelaiLimite
Dim k
Dim DateActuelle As Date

DateActuelle = Now

Sheets("ATTENTION").Select
' Colore en Gris les délais négatifs
For k = 3 To 25
' Test de la cellule selectionnée
Range("D" & k).Select
DateLimite = Range("D" & k).Value
DelaiLimite = (DateLimite - DateActuelle)
If (DelaiLimite < 0) Then
' Action
Range("D" & k).Select
Cell.Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
Else
Blanc = 0
End If

Next k

Mais en l'exécutant, il plante sur "Else" : "Erreur de compilation: Else sans If"

Je vais regarder les autres propositions faites.
Merci
 
Re tous,

Pour ton Else, il manque un End With je crois. Comme ça :

If (DelaiLimite < 0) Then
&nbsp;&nbsp;' Action
&nbsp;&nbsp;Range("D" & k).Select
&nbsp;&nbsp;Cell.Select
&nbsp;&nbsp;With Selection.Interior
&nbsp;&nbsp;&nbsp;&nbsp;.ColorIndex = 15
&nbsp;&nbsp;&nbsp;&nbsp;.Pattern = xlSolid
&nbsp;&nbsp;End With
Else
&nbsp;&nbsp;Blanc = 0
End If

Il me semble aussi que le Range.Select et le Cell.Select juste après font double emploi.

Autrement pour la mise en forme conditionnelle tu peux affiner en mettant en condition :
"La valeur de la cellule" "est comprise entre" "01/01/2004" "=AUJOURDHUI()"
Remplace "01/01/2004" par la date la plus petite que tu puisses avoir. Tout le reste ne rentrera pas dans ta condition.

Voilà, j'espère que ça t'aidera.

A+

José
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour