OVH Cloud OVH Cloud

Éliminer date

4 réponses
Avatar
Denys
Bonjour à tous,

Question technique pour vous... Dans la macro qui suit, Excel doit éliminer
les lignes dont la date est antérieure à 2003..... La macro ne fronctionne
que partiellement...... i.e. elle n'élimine que quelques cellules (lignes)....

J'ai essayé d'écrire 1999 sur environ 10 lignes et excel n'en élimine que
quelques uns..... Puis je n'en écris que trois, Excel en élimine deux.....
Sauriez-vous pourquoi Excel en saute de temps en temps???? Le format des
cellules est "général".

Voici la macro:

Sub EliminerDate()
Dim cell As Range
ActiveWindow.DisplayZeros = True
derli = Cells(Rows.Count, "V").End(xlUp).Row
For Each cell In Range("V1:V" & derli)

If IsEmpty(cell) Or Trim(cell.Value) < 2003 Then
cell.EntireRow.Delete
End If
Next cell
End Sub

Merci pour votre temps

Denys

4 réponses

Avatar
tiah
Hello !

Admettons qu'il est à la ligne 4
la prochaine sera la 5
si c'est la date que tu veux, il supprimera la ligne 4
La ligne 5 deviendra la 4, puisqu'elle remonte
et lui continuera avec la ligne 5 (qui était anciennement la 6)

il a donc sauté une ligne avec cette procédure.

faudrait peut-être faire un FOR avec un i=1 to ...
et quand il supprime la ligne, tu lui fais un i=i-1
pour qu'il refasse la même ligne
Avatar
PMO
Bonjour,

Essayez le code ci-dessous

'******************
Sub PMO_EliminerDate()
Dim derli&
Dim var
Dim i&
ActiveWindow.DisplayZeros = True
derli = Cells(Rows.Count, "V").End(xlUp).Row
var = Range("V1:V" & derli)
For i& = derli To 1 Step -1
If IsDate(var(i&, 1)) And _
var(i&, 1) < DateValue("1/1/2003") _
Then Rows(i&).Delete
Next i&
End Sub
'******************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,

Question technique pour vous... Dans la macro qui suit, Excel doit éliminer
les lignes dont la date est antérieure à 2003..... La macro ne fronctionne
que partiellement...... i.e. elle n'élimine que quelques cellules (lignes)....

J'ai essayé d'écrire 1999 sur environ 10 lignes et excel n'en élimine que
quelques uns..... Puis je n'en écris que trois, Excel en élimine deux.....
Sauriez-vous pourquoi Excel en saute de temps en temps???? Le format des
cellules est "général".

Voici la macro:

Sub EliminerDate()
Dim cell As Range
ActiveWindow.DisplayZeros = True
derli = Cells(Rows.Count, "V").End(xlUp).Row
For Each cell In Range("V1:V" & derli)

If IsEmpty(cell) Or Trim(cell.Value) < 2003 Then
cell.EntireRow.Delete
End If
Next cell
End Sub

Merci pour votre temps

Denys


Avatar
Denys
Bonjour Patrick et tiah,

Merci beaucoup pour vos réponses.... Patrick, ton code n'a pas
fonctionné.... et je ne comprend pas pourquoi... Peut-être est-ce dû au
format de la cellule...

Mais merci beaucoup, j'avance avec vos idées...


Bonjour à tous,

Question technique pour vous... Dans la macro qui suit, Excel doit éliminer
les lignes dont la date est antérieure à 2003..... La macro ne fronctionne
que partiellement...... i.e. elle n'élimine que quelques cellules (lignes)....

J'ai essayé d'écrire 1999 sur environ 10 lignes et excel n'en élimine que
quelques uns..... Puis je n'en écris que trois, Excel en élimine deux.....
Sauriez-vous pourquoi Excel en saute de temps en temps???? Le format des
cellules est "général".

Voici la macro:

Sub EliminerDate()
Dim cell As Range
ActiveWindow.DisplayZeros = True
derli = Cells(Rows.Count, "V").End(xlUp).Row
For Each cell In Range("V1:V" & derli)

If IsEmpty(cell) Or Trim(cell.Value) < 2003 Then
cell.EntireRow.Delete
End If
Next cell
End Sub

Merci pour votre temps

Denys


Avatar
Denys
Rebonjour,

Pour ceux que ça pourrait intéresser..... J'ai repris une macro qui m'avait
été proposée par Denis Michon, et que j'ai adapté à mes nouveaux besoins...

Merci encore à Patrick pour ta macro qui me sera sûrement utile dans le
futur...

Denys


Sub EliminerDate()
With ActiveSheet
Application.ScreenUpdating = False
With .Range("V:V")
.AutoFilter Field:=1, Criteria1:="<2003"
.Range("_FilterDatabase").Offset(1).SpecialCells(xlCellTypeVisible) _
.EntireRow.Delete (xlUp)
.AutoFilter
End With
End With
End Sub