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

Fermé
besoin_d'aide Messages postés 28 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 25 juin 2013 - 25 juin 2013 à 11:20
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juin 2013 à 16:06
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 28 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 25 juin 2013
25 juin 2013 à 11:45
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
Modifié par pijaku le 25/06/2013 à 16:06
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