If avec condition en formule

Résolu
clem74170 Messages postés 8 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 5 novembre 2009 - 5 nov. 2009 à 09:41
clem74170 Messages postés 8 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 5 novembre 2009 - 5 nov. 2009 à 17:09
Bonjour,

Je travail sur VBA et j'aurais besoin de créer un langage If then.

La problématique est la suivante :

Dans une colonne x, j'ai des dates triées en mode décroissant et dans une cellules R1C1 une date y.

Je souhaite faire une boucle annalisant ces dates et supprimant toutes les dates suppérieures à la date y + 4 mois.

La boucle fonctionne bien mais le problème se situe au niveau du If ; Celui ci ne reconnait pas les dates supérieures de + de 4 mois par rapport à la date en R1C1.

J'ai essayé différente façon de l'écrire mais sans résultats.

Une des tentatives est la suivante :

If ActiveCell > date(year(R2C10),month(R2C10),day(R2C10)) Then

j'espère que vous allez pouvoir éclairer ma lanterne parce que là je bloque vraiment et je n'arrive pas à voir pourquoi.

PS : J'ai bien mis la colonne x et la date R1C1 en format date

Cordialement,

Clément

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 nov. 2009 à 11:43
Salut
Ah ces dates, toujours ce problème de compréhension.
Les dates sous Excel sont représentées par un simple chiffre (Long) et c'est l'AFFICHAGE qui prend un format particulier.
Puisqu'il peut y avoir des problèmes de compatibilité entre les dates au format US, français ou japonnais, mieux vaut ne travailler que sur la valeur numérique, surtout quand il s'agit de faire une comparaison.

Exemple :
    Dim maCell As Object
    For Each maCell In Range("A4:A8")
        If CLng(maCell) > CLng(Date) Then
            maCell.Offset(0, 1) = "Oui"
        Else
            maCell.Offset(0, 1) = " "
        End If
    Next

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
5 nov. 2009 à 10:08
Boinjour,

Ce que tuy as écrit ( date(year(R2C10),month(R2C10),day(R2C10))
est la synbtaxe de Dateserial

(la fonbction Date n'admet pas de paramètres et concerne la date en cours.
Ouvre ton aide en ligne sur le mot DateSerial
0
clem74170 Messages postés 8 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 5 novembre 2009
5 nov. 2009 à 11:22
J'étais donc à coté de la plaque.

J'ai changé ma syntaxe mais ça ne marche toujours pas.

J'ai essayé différentes syntaxes :

If ActiveCell > FormulaR1C1 = DateSerial(Year(R2C10), Month(R2C10), Day(R2C10)) Then

Celle ci ne trouve aucune date supérieure à la date en R2C10

If ActiveCell > DateSerial(Year(R2C10), Month(R2C10), Day(R2C10)) Then

Celle ci donne toutes les dates supérieures à R2C10, et pour cause selon lui R2C10 est vide alors qu'il y a bien une date dedans
0
clem74170 Messages postés 8 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 5 novembre 2009
5 nov. 2009 à 17:09
Nikel,

Merci bq
0
Rejoignez-nous