Macro recherche dates

Résolu
Inguyone Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Inguyone Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
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

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
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
Inguyone Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
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
Inguyone Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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