effacer plage de cellule en fonction de la date de l'une d'entre elle en VBA

superbog

XLDnaute Occasionnel
Bonjour,

Je souhaite pouvoir en VBA (car je dois appliquer cela sur un classeur entier existant) pouvoir effacer une plage de cellule en fonction de la date de l'une d'entre elle

je m'explique:
Je souhaite que pour chaque ligne de mon tableau les cellules A à D soient effacées (pas supprimées) quand la
date portée dans la cellule B est antérieure au 01/01/2013.

ci joint un fichier exemple


Pourriez vous m'aider, je galère avec cette histoire de date.

Voilà ce que j'ai testé mais ça ne marche pas

Code:
For Each cel In sh.Range("A2:A" & sh.Cells(sh.Rows.Count, "B").End(xlUp).Row) 
   If cel.Value < 1 / 1 / 2013 Then cel.Rows.ClearContents


merci d'avance de votre aide
 

Pièces jointes

  • testdate.xlsx
    58.7 KB · Affichages: 53

superbog

XLDnaute Occasionnel
Re : effacer plage de cellule en fonction de la date de l'une d'entre elle en VBA

certes mais reste le pb de la date
je n'arrive pas à faire en sorte que la condition de date s'applique
en outre je ne veux effacer que les cellules a:d pas toute la ligne
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : effacer plage de cellule en fonction de la date de l'une d'entre elle en VBA

Bonsoir le fil, bonsoir le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (dernière Ligne)
Dim pl As Range 'déclare la variable pl (Plage)

Application.ScreenUpdating = False 'masque les changements à l'écran
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = Range("A1:D" & dl) 'définit la plage pl
Range("A1").AutoFilter 'lance le filtre automatique
Range("A1").AutoFilter , field:=2, Criteria1:="<01/01/2013" 'filtre la colonne B avec le critère < 01/01/2013
pl.SpecialCells(xlCellTypeVisible).ClearContents 'efface les cellules visible de la plage pl
Range("A1").AutoFilter 'annule le filtre automatique
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub
 

superbog

XLDnaute Occasionnel
Re : effacer plage de cellule en fonction de la date de l'une d'entre elle en VBA

une petite précision toutefois,
je souhaiterai qu'une fois l'effacement fait, la plage concernée soit triée du plus ancien au plus récent, comment faire?
merci d'avance
 

superbog

XLDnaute Occasionnel
Re : effacer plage de cellule en fonction de la date de l'une d'entre elle en VBA

:(
un problème apparait, sans doute ma faute, en réalité la macro que je dois faire va me permettre d'appliquer le processus d'effacement de cellules à plusieurs plages différentes de la même feuille (puis à toutes les feuilles d'un même classeur).

je m'aperçois cependant qu'il y a un problème car mode de tri proposé est par colonne entière or mes plages peuvent commencer seulement à la 22ème ligne (ou autre)

je joins un fichier exemple un peu modifié (et en excel 2003 :)

merci de votre patiente aide
 

Pièces jointes

  • testdate.xls
    112 KB · Affichages: 37
  • testdate.xls
    112 KB · Affichages: 34
  • testdate.xls
    112 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
312 378
Messages
2 087 758
Membres
103 660
dernier inscrit
205 Peugeot