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

  1. 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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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