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

  • Initiateur de la discussion Initiateur de la discussion PyGidiuM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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+ 😎
 
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😛65000").clearcontents
 
Dernière édition:
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.
 
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
 
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+
 
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+ 😎
 
Dernière édition:
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:
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour