Macro recherche dates
Résolu
Inguyone
Messages postés
15
Statut
Membre
-
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.
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
-
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 - -
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.
-
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
-
-
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.