Supprimer une ligne si la date devient trop vielle

Bonjour à tous

j'ai une macro qui est sensé me supprimer les lignes ou il y'a la valeur 2014 dans la colonne F (de la page extrait). mon problème est que cette colonne est dans le format date (donc 13/06/2014 par exemple) et ma macro ne marche pas. J'ai bien essayer de mettre une étoile devant 2014 pour dire qu'il y'a quelque chose avant mais ca ne fonctionne toujours pas.

aidez moi s'il vous plait je calle !!..

Voila ma macro qui est sensé supprimer les lignes ou il y'a 2014 dans la colonne F de la page extrait

' je travaille sur la colonne F

For i = .Range("F" & .Rows.Count).End(xlUp).Row To 2 Step -1

' si la valeur est 2014 je la supprime

If .Range("F" & i).Value = "*2014" Then

.Rows(i).Delete

End If

j'ai une autre macro qui fonctionne aussi mais j'ai le meme probleme

Sub Macro2()

For i = Cells(1, 6).CurrentRegion.Rows.Count To 1 Step -1

If Cells(i, 6).Value = "*2014" Then Cells(i, 1).EntireRow.Delete

Next

End Sub

Bonjour

A tester

Sub test()
Dim i As Integer
DernLigne = Range("f" & Rows.Count).End(xlUp).Row

    For i = Range("F" & DernLigne).Row To 1 Step -1
    ' si la valeur est 2014 je la supprime
        If Format(Cells(i, 6).Value, "yyyy") = 2014 Then
            Rows(i).Delete
        End If
    Next i

End Sub

Bonjour,

Tu ne peux pas avoir de résultat probant en appliquant des paramètres utiles lors de comparaisons de chaînes à des nombres !

2014 est un nombre, tu le traites comme du texte.

Si 13/06/2014 est une date, c'est donc aussi un nombre.

Si tu as un mélange de types de données dans ta colonne, il faut tester pour savoir quel type de données est présent à chaque fois.

S'il s'agit d'une date tu utilises la fonction Year pour renvoyer l'année et savoir s'il s'agit de 2014, sinon tu testes sur 2014, sans guillemets s'il s'agit d'un nombre.

Cordialement.

Salut tout le monde,

M12, MFerrand,

dans la même veine, à enrober par le code de M12.

Dim dDate As Date
iDate=2014
'Variable à définir dans le code selon une méthode ou l'autre.
'Par ex : iDate=Year(Now) - 2
'
dDate = Range("F" & i).Value
If Year(dDate) = iDate Then Rows(i).Delete

A+

Bonjour à tous, merci de m'avoir répondu et désolé de ne pas avoir répondu avant, je n'avais pas internet :/

j'ai testé vos macro mais je comprend pas trop, ca ne fonctionne pas

peut etre vaudrait il mieux que je vous envoi mon fichier

Jawst

6test-reel.xlsm (293.91 Ko)

Re,

Pour moi aucun soucis, ma macro marche

Appui le "BOUTON" en haut de la colonne F

8test-reel.xlsm (288.10 Ko)

Bonjour,

Si tu commençais par :

  • supprimer tous les modules vides qui encombrent inutilement,
  • écrire correctement ton code en l'indentant, déclarant les variables (toutes !) en tête de procédure, t'assurant que ce que fait chaque ligne de commande est bien ce que tu veux, et que ce que tu veux est justifié...

ce qui ne va pas sauterait vite aux yeux !

Cordialement.

Salut,

aucune problème non plus!

Dim dDate As Date
'
Application.ScreenUpdating = False
'
iRow = Range("F" & Rows.Count).End(xlUp).Row
idate = 2014
For x = Range("F" & iRow).Row To 2 Step -1
    dDate = Range("F" & x).Value
    If Year(dDate) = idate Then Rows(x).Delete
Next
'
Application.ScreenUpdating = True
'

A+

Re,

oui en effet ca marche, c'est moi qui ai fais une erreur je m'en excuse

JE vous remercie beaucoup vous me sauver ^^

MrFerrand, je suis d'accord avec toi mais le problème c'est que je n'y connais rien du tout et du coup je sais que mes codes sont sales mais je ne sais pas faire autrement :/

je suis en train d'apprendre

Bref, merci

Jawst

Rechercher des sujets similaires à "supprimer ligne date devient trop vielle"