Signaler

Condition sur une colonne [Résolu]

Posez votre question Jono92600 62Messages postés jeudi 26 janvier 2017Date d'inscription 10 mars 2017 Dernière intervention - Dernière réponse le 3 févr. 2017 à 22:21 par Jono92600
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.

Afficher la suite 
Utile
+0
plus moins
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.

Jono92600 62Messages postés jeudi 26 janvier 2017Date d'inscription 10 mars 2017 Dernière intervention - 2 févr. 2017 à 11:27
Pour la question 1, je viens d'y répondre.

Merci
Répondre
Jono92600 62Messages postés jeudi 26 janvier 2017Date d'inscription 10 mars 2017 Dernière intervention - 2 févr. 2017 à 15:01
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.
Répondre
Donnez votre avis
Utile
+0
plus moins
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...
Jono92600 62Messages postés jeudi 26 janvier 2017Date d'inscription 10 mars 2017 Dernière intervention - 3 févr. 2017 à 10:12
Merci, je vais essayer votre code.
Répondre
Jono92600 62Messages postés jeudi 26 janvier 2017Date d'inscription 10 mars 2017 Dernière intervention - 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.
Répondre
pijaku 12170Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 9 mars 2017 Dernière intervention - 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
Répondre
Jono92600 62Messages postés jeudi 26 janvier 2017Date d'inscription 10 mars 2017 Dernière intervention - 3 févr. 2017 à 22:21
Bonjour,

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

Je mets mon fichier tout en continuant à bosser dessus.

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

Merci.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !