XL 2013 Éliminer une partie d'un fichier xls (par date)

PyGidiuM

XLDnaute Nouveau
Bonjour tout le monde,

Je planche dessus depuis maintenant une semaine sans trouver une solution.
On m'a souvent dit écoute les autres ils sont souvent plus intelligent que toi (je ne sais pas ce que je dois en comprendre ;))

Tous les matin je reçois le résultat d'une requête au format xls, me présentant des lignes de prescription :
La requête est lancée tous les matins à 8h et m'exporte toutes les prescription (d'un service d'urgence) sur les dernière 24h.

Voici mon souci : tous les matins mes nouvelles données sont ajoutées aux anciennes (24h précédente) et donc voilà je suis obligé tous les matins de supprimer manuellement les x lignes de la journée d'avant pour pouvoir traiter mes nouvelles.

Serait il possible en une seule action (macro) de supprimer toutes les anciennes?
transporter les nouvelles dans une nouvelle feuille par exemple?, je ne sais pas, je suis à cours d'idée.

Merci infiniment à tous
 

Pièces jointes

  • DMU_Extraction_Medocs_SAU.xls
    104.5 KB · Affichages: 66

Lone-wolf

XLDnaute Barbatruc
Re : Éliminer une partie d'un fichier xls (par date)

Bonjour PyGidium,

a mettre dans le module de la feuille

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DateAnt As Date
Application.EnableEvents = False
DateAnt = Day(Range("m2"))
If DateAnt < Day(Date) Then Range("a2:p1000").ClearContents
Application.EnableEvents = True
End Sub


A+ :cool:
 

st007

XLDnaute Barbatruc
Re : Éliminer une partie d'un fichier xls (par date)

Bonjour,
"tous les matins mes nouvelles données sont ajoutées aux anciennes"

comment ??? une macro, un copier coller ????
en cas de copier coller
aller copier tes nouvelles données
se positionner en A2 puis "maj"+"ctrl"+"fleche droite"+"fleche vers le bas"
supprimer .
reclic en A2 et coller.

Si c'est une macro,
ajoute en début de procedure
Range("A2:p65000").clearcontents
 
Dernière édition:

PyGidiuM

XLDnaute Nouveau
Re : Éliminer une partie d'un fichier xls (par date)

Bonjour st007,
par un copier coller automatique de ma requête (pas fait avec excel)
via ma requête impossible de supprimer les données pré-existante à l’exécution de la nouvelle.
 

PyGidiuM

XLDnaute Nouveau
Re : Éliminer une partie d'un fichier xls (par date)

st007

Mon export excel est traiter et enregistrer tous les matins à 8h dans un dossier dédié de façon totalement automatique.
ce n'est pas moi qui fait le copier-coller
mais la machine, qui incrémente de ses nouvelles données tous les matins le même fichier,
sans supprimer ce qui est déjà présent, quand j'ouvre le fichier les 2*24h sont déjà là et enregistrées.
je cherche en une action (peut ètre à automatiser plus tard) à supprimer d'un coup d'un seul les 24h déjà traitées la veille et donc devenues inutiles
 

job75

XLDnaute Barbatruc
Re : Éliminer une partie d'un fichier xls (par date)

Bonjour,

Si les données de chaque jour sont accompagnées de leur date, il suffit de filtrer (filtre automatique) le tableau sur la date de la veille.

Puis de supprimer les données affichées.

Très nombreux exemples de macros sur XLD faisant cela automatiquement.

A+
 

Lone-wolf

XLDnaute Barbatruc
Re : Éliminer une partie d'un fichier xls (par date)

Re PyGidium,

à moin de dire une connerie, c'est ce que fait la macro que j'ai mis


EDIT: à mettre dans WorkBook.Open


Code:
Private Sub Workbook_Open()
Dim DateAnt As Date, HeureAnt As Date
Dim MyTime As Date, Tmp As Date

DateAnt = Day(Feuil1.Range("m2"))
Tmp = #12:07:00 AM#       'Représente 7:00h du matin
MyTime = Hour(Tmp)
HeureAnt = Hour(Feuil1.Range("f2"))

If DateAnt < Day(Date) And MyTtime < HeureAnt Then Feuil1.Range("a2:p1000").ClearContents
End Sub



A+ :cool:
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Éliminer une partie d'un fichier xls (par date)

Bonjour à tous,

Pour supprimer les lignes de la veille,

1) si les 9 premiers jours du mois s'écrivent comme janvier 01 2016 :

Code:
Sub SupprimeDates()
With [A1].CurrentRegion.Columns("F")
  .Replace Format(Date - 1, "mmmm dd yyyy") & "*", 0, xlWhole
  .Value = .Value 'convertit les textes en nombres
  On Error Resume Next 's'il n'y a pas de nombre
  .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
End With
End Sub
2) s'ls s'écrivent comme janvier 1 2016 :

Code:
Sub SupprimeDates()
With [A1].CurrentRegion.Columns("F")
  .Replace Format(Date - 1, "mmmm d yyyy") & "*", 0, xlWhole
  .Value = .Value 'convertit les textes en nombres
  On Error Resume Next 's'il n'y a pas de nombre
  .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
End With
End Sub
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Éliminer une partie d'un fichier xls (par date)

Re,

Une autre solution qui supprime toutes les lignes ne contenant pas la date du jour en colonne F :

Code:
Sub SupprimeDates()
With [A1].CurrentRegion
  With .Columns(.Columns.Count + 1).Offset(1) 'colonne auxiliaire
    .FormulaR1C1 = "=SEARCH(TEXT(TODAY(),""mmmm jj aaaa""),RC6)"
    On Error Resume Next 's'il n'y a pas de valeur d'erreur
    .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
    .ClearContents
  End With
End With
End Sub
ou :

Code:
Sub SupprimeDates()
With [A1].CurrentRegion
  With .Columns(.Columns.Count + 1).Offset(1) 'colonne auxiliaire
    .FormulaR1C1 = "=SEARCH(TEXT(TODAY(),""mmmm j aaaa""),RC6)"
    On Error Resume Next 's'il n'y a pas de valeur d'erreur
    .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
    .ClearContents
  End With
End With
End Sub
A+
 

Statistiques des forums

Discussions
312 503
Messages
2 089 055
Membres
104 013
dernier inscrit
VELONDAHY Mickaël