Suppression d'une ligne si date<date aujourd'hui

besoin_d'aide Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je suis novice et j'ai besoin de votre aide svp.

Je bloque au niveau de mon code, je voudrai qu'il balaye la colonne AO, et si la date dans AO est < à aujourd'hui + 1 mois, qu'il me supprime la ligne...

aussi, si la ligne est vide, il ne la supprime pas

Je ne comprends vraiment pas ce qu'il me supprime là, il me supprime tout et rien

Voilà le code que j'ai utilisé :

Sub CDD()
Dim i As Long, drLig As Long
Dim wsBDD As Worksheet
Dim wsEn As Worksheet
Dim maFeuil As Worksheet
Dim Place As Long
Dim Today As Date


Set wsBDD = ThisWorkbook.Worksheets("BDD")
Set wsEn = ThisWorkbook.Worksheets("Entrants")
Set maFeuil = ThisWorkbook.Worksheets("infos")

Today = Now
'On supprime les lignes inutiles (FIN CDD)
wsBDD.Select
Place = 1 + Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row

'MsgBox Oui + Non
Select Case MsgBox("voulez-vous supprimer les CDD arrivés à terme?", vbYesNo, "AFPA ALSACE")
Case vbYes
'Balayer les lignes de ES
For i = 2 To Place
If wsBDD.Range("AO" & i) <= DateAdd("m", 1, Today) Then
wsBDD.Range("AO" & i).EntireRow.Delete
End If
Next i


Case vbNo
MsgBox ("l'action a été annulée")
End Select
End Sub

merci pour votre aide
Cordialement
A voir également:

2 réponses

besoin_d'aide Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
rebonjour,
voilà ce que j'ai réussi à faire. Toutefois, il me laisse toujours une ligne qu'il faut supprimer.. dans ce cas, il faut que je reclic à nouveau.. Quelqu'un sait-il pourquoi svp? qu'est ce qui cloche dans mon code?

MERCI INFINIMENT




Sub CDD()
Dim i As Long, drLig As Long
Dim wsBDD As Worksheet
Dim wsEn As Worksheet
Dim maFeuil As Worksheet
Dim Place As Long
Dim Today As Date


Set wsBDD = ThisWorkbook.Worksheets("BDD")
Set wsEn = ThisWorkbook.Worksheets("Entrants")
Set maFeuil = ThisWorkbook.Worksheets("infos")

Today = Now
'On supprime les lignes inutiles (FIN CDD)
wsBDD.Select
Place = 1 + Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row

'MsgBox Oui + Non
Select Case MsgBox("voulez-vous supprimer les CDD arrivés à terme?", vbYesNo, "AFPA ALSACE")
Case vbYes
'Balayer les lignes de ES
For i = 2 To Place
If (wsBDD.Range("AO" & i) <> "") And (wsBDD.Range("AO" & i) <= DateAdd("m", 1, Today)) Then
wsBDD.Range("AO" & i).EntireRow.Delete
End If
Next i


Case vbNo
MsgBox ("l'action a été annulée")
End Select



End Sub


I
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Essaye en "inversant" ta boucle :
remplace :
For i = 2 To Place
    If (wsBDD.Range("AO" & i) <> "") And (wsBDD.Range("AO" & i) <= DateAdd("m", 1, Today)) Then
        wsBDD.Range("AO" & i).EntireRow.Delete
    End If
Next i 

par :
For i = Place To 2 Step - 1
    If (wsBDD.Range("AO" & i) <> "") And (wsBDD.Range("AO" & i) <= DateAdd("m", 1, Today)) Then
        wsBDD.Range("AO" & i).EntireRow.Delete
    End If
Next i 


Cordialement,
Franck P
0