Macro recherche dates

Résolu/Fermé
Inguyone Messages postés 14 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 30 janvier 2011 - 30 janv. 2011 à 08:32
Inguyone Messages postés 14 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 30 janvier 2011 - 30 janv. 2011 à 13:44
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.

A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 30/01/2011 à 10:49
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 vendredi 22 janvier 2010 Statut Membre Dernière intervention 30 janvier 2011
30 janv. 2011 à 12:18
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
30 janv. 2011 à 12:29
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 vendredi 22 janvier 2010 Statut Membre Dernière intervention 30 janvier 2011
30 janv. 2011 à 13:44
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