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

besoin_d'aide Messages postés 30 Statut Membre -  
pijaku Messages postés 13513 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

2 réponses

besoin_d'aide Messages postés 30 Statut Membre
 
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 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
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