Macro recherche dates

Résolu
Inguyone Messages postés 15 Statut Membre -  
Inguyone Messages postés 15 Statut Membre -
Bonjour,

Je suis à la recherche d'une macro qui prendrait en charge la date du jour et la comparerait avec des dates dans une base de données. J'ai créé une formule pour contrôler ces dates et me les renvoyés avec un chiffre =SI(XX<XX ;2 ;1) et ensuite une macro
Sub suppr()
Dim I As Long
Dim Plage As Range
Set Plage = Range("m4:m" & Range("m4").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Value > 1 Then
Plage.Cells(I).EntireRow.Delete
End If
Next

End Sub

Cela fonctionne, mais pourriez-vous m'aider pour que cette macro recherche directement dans la colonne « g »des dates et non dans celle de ma formule « m ».

En vous remerciant d'avance pour votre aide.

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Ce code peut être :
    Sub test()   
    Dim I As Long   
    Dim Plage As Range   
    Set Plage = Range("G4:G" & Range("G4").End(xlDown).Row)   
    For I = Plage.Cells.Count To 1 Step -1   
    If CDate(Date) > CDate(Plage.Cells(I).Value) Then   
        MsgBox "Date du jour supérieure à date indiquée"   
    Else   
        MsgBox "Date du jour inférieure à date indiquée"   
    End If   
    Next 
    End Sub


    précisions : la colonne G ne doit comporter que des dates.
    Testez sur un petit nombre de lignes... Sinon pour arrêter une macro : Ctrl+Pause (à côté d'Impr Ecran)
    "Laissez-moi deviner... Votre surnom, c'est «Bande Passante»? "
    - Le Tribunal des flagrants délires- P.Desproges -
    0
  2. Inguyone Messages postés 15 Statut Membre
     
    Merci pour votre aide, mais malheureusement cela ne fonctionne pas. Je recois des messsages me signalant que la date est plus grande ou plus petite, mais la macro ne travaille pas.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Si vous recevez des messages, c'est que la macro "travaille". A vous de l'adapter un peu...
      J'ai mis exprès ces messages pour que vous sachiez quoi faire.
      Remplacez dans le code les lignes MsgBox par ce que vous souhaitez...
      A TESTER SUR UNE COPIE DE VOTRE CLASSEUR EXCEL!!! Cette macro comporte un .Delete irréversible!!!
      Exemple vous voulez supprimer toutes les lignes ou la date en colonne G est supérieure à la date du jour :
      Sub test()   
      Dim I As Long   
      Dim Plage As Range   
      Set Plage = Range("G4:G" & Range("G4").End(xlDown).Row)   
      For I = Plage.Cells.Count To 1 Step -1   
      'ici on teste : si date du jour supérieure à date en G Alors
      If CDate(Date) > CDate(Plage.Cells(I).Value) Then   
          'ici on ne veux rien faire, donc on ne mets rien. Ici on mets une action si la date du jour est supérieure à la date en G   
      Else   
          'ici on mets l'action si la date du jour est inférieure à la date en G
          Plage.Cells(I).EntireRow.Delete 
      End If   
      Next 
      End Sub
      0
  3. Inguyone Messages postés 15 Statut Membre
     
    C'est super, je viens de modifier > par < et cette macro est celle que je recherchais. Je suis assez nul au niveau des macros et donc je m'en remet souvent au formules, mais les fichiers deviennent trop lourd.

    Je vous remercie pour votre aide et vous souhaite une excellente journée.
    0