Condition sur une colonne

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 pijaku le 2/02/2017 à 10:35
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017 - 3 févr. 2017 à 22:21
Bonjour,

J'aimerai mettre plusieurs condition sur sur 3 colonnes ( de la colonne E à la colonne K). Le but de cette exercice est :

Si Date de la colonne E > Aujourd'hui [de + de 7 Jours] alors
Colonne G = "Dans les temps"
Si Date de la colonne E < Aujourd'hui [de - de 7 Jours] alors
Colonne G = "A FAIRE"
Si Date de la colonne E <= Aujourd'hui alors
Colonne G = "EN RETARD"
Si la colonne F contient une date alors
Colonne G = "FAIT"

Illustration de mon code :)

Sub Essais()

Dim PremLig As Long
Dim DL As Long
Dim i As Long

'dernière ligne colonne A
DL = Range("A" & Rows.Count).End(xlUp).Row
'première ligne à traiter :
PremLig = 2

'Boucle :
For i = PremLig To DL
    If Range("E" & i) > Now + 7 Then  ' Aujourd'hui + de 7 jours
        Range("G" & i) = "Dans les temps"
    ElseIf Range("E" & i) > Now - 7 Then   ' Aujourd'hui - de 7 jours
       Range("G" & i) = "A FAIRE"
    ElseIf Range("E" & i) <= Now Then  ' Aujourd'hui
       Range("G" & i) = "EN RETARD"
    Else
        Range("G" & i) = ""
    End If

Next

End Sub


Je vous remercie d'avance.

A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
2 févr. 2017 à 10:41
1- ou en es tu de ton autre sujet TextBox Date?
2- tes conditions ne conviennent pas.
Il te faut travailler avec des intervalles de date.

0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
2 févr. 2017 à 11:27
Pour la question 1, je viens d'y répondre.

Merci
0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
Modifié par Jono92600 le 2/02/2017 à 15:03
J'ai essayé plusieurs méthodes mais y a que la première condition qui fonctionne.

Si Date de la colonne E > Aujourd'hui [de + de 7 Jours] alors
Colonne W = "Dans les temps"
Si Date de la colonne E < Aujourd'hui [de - de 7 Jours] alors
Colonne W = "A FAIRE"
Si Date de la colonne E <= Aujourd'hui alors
Colonne W = "EN RETARD"
Si la colonne F contient une date alors
Colonne W = "FAIT"

'On continu les condition avec les colonnes (H et I)

Si Date de la colonne H > Aujourd'hui [de + de 7 Jours] alors
Colonne W = "Dans les temps"
Si Date de la colonne H < Aujourd'hui [de - de 7 Jours] alors
Colonne W = "A FAIRE"
Si Date de la colonne H <= Aujourd'hui alors
Colonne W = "EN RETARD"
Si la colonne I contient une date alors
Colonne W = "FAIT"

'On continu les condition avec les colonnes (K et L)

Si Date de la colonne K > Aujourd'hui [de + de 7 Jours] alors
Colonne W = "Dans les temps"
Si Date de la colonne K < Aujourd'hui [de - de 7 Jours] alors
Colonne W = "A FAIRE"
Si Date de la colonne K <= Aujourd'hui alors
Colonne W = "EN RETARD"
Si la colonne L contient une date alors
Colonne W = "FAIT"

Je voulais partager mon fichier a nouveau mais le site est bloqué.

Il me manque que plus que deux codes pour le finaliser.


Par avance merci.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
3 févr. 2017 à 07:41
Bonjour,

Il faut travailler avec des intervalles !

A qu'elle condition appartient la date du 01/01/2017? Elle répond à tes deux conditions :
Si Date de la colonne K < Aujourd'hui [de - de 7 Jours] alors
Colonne W = "A FAIRE"
Si Date de la colonne K <= Aujourd'hui alors
Colonne W = "EN RETARD"

Par conséquent la première valable est celle choisie par le programme.
Il ne faut pas laisser d’ambiguïté!

X < Date - 7 <= Y <= Date + 7 < Z
Te fera 3 groupes bien distincts.

Regarde ce code :
Dim maDate As Date
maDate = CDate(Range("E" & i))
Select Case maDate
    Case Is < Date - 7
        MsgBox "cas 1"
    Case Is <= Date - 7, Is <= Date + 7
        MsgBox "cas 2"
    Case Is > Date + 7
        MsgBox "cas 3"
End Select


A toi à bien choisir tes conditions...
0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
3 févr. 2017 à 10:12
Merci, je vais essayer votre code.
0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
3 févr. 2017 à 11:06
' Après adaptation de votre code j'obtiens ceci.


Sub Essais()

Dim PremLig As Long
Dim DL As Long
Dim i As Long
Dim maDate As Date

'dernière ligne colonne A
DL = Range("A" & Rows.Count).End(xlUp).Row
'première ligne à traiter :
PremLig = 2

'Boucle :
For i = PremLig To DL

maDate = CDate(Range("E" & i))
Select Case maDate

'Si la date prévue est supérieur à la date d'aujourd'hui de + de 7 jours
Case Is => Date + 7
Range("G" & i) = "Dans les temps"

'Si la date prévue est supérieur à la date d'aujourd'hui de - de 7 jours
Case Is => Date - 7
Range("G" & i) = "Échéance imminente"

'Si la date prévue est inférieure ou égale à la date d'aujourd'hui
Case Is <= Date
Range("G" & i) = "EN RETARD"
End Select

Next

End Sub

'Je n'obtiens pas exactement la même chose au niveau de mon tableau.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
3 févr. 2017 à 12:03
A toi à bien choisir tes conditions...
Si la date prévue est supérieur à la date d'aujourd'hui de - de 7 jours
entre en conflit avec :
Si la date prévue est inférieure ou égale à la date d'aujourd'hui
0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
Modifié par Jono92600 le 3/02/2017 à 22:24
Bonjour,

Suite a plusieurs essais je suis encore bloqué sur les conditions.

Je mets mon fichier tout en continuant à bosser dessus.

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

Merci.
0