Eliminer une partie d'un export grâce à la date
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
PS : J'ai oublié de préciser, la date sur laquelle je veux faire ma sélection est dans la colonne "DTEENT" (colonne F)
Bonjour et bienvenue sur le forum
Tu écris :
la date sur laquelle je veux faire ma sélection est dans la colonne "DTEENT" (colonne F)
OK mais sur quel fichier ? Tu n'en a joint aucun...
Bye !
Bonjour,
Je te propose une solution VBA qui va filtrer tes données par date et copier les résultats dans de nouvelles feuilles.
L'idée de plus, est d'intégrer cette procédure dans ton classeur de macros personnelles (PERSONAL.XLSB).
Il te faudra certainement le créer (on verra après, si ma proposition retient ton attention, puisque nous sommes nombreux sur ce sujet
Pour résumer, tu ouvres le classeur, tu fais ALT F8 et tu exécutes la procédure.
A te relire.
Cdlt
Public Sub CopyFiltersToWorksheets()
Dim wb As Workbook
Dim wsData As Worksheet, wsTemp As Worksheet, WSnew As Worksheet
Dim lastCol As Long, lRow As Long
Dim rngData As Range, Cell As Range
Application.ScreenUpdating = False
Set wb = ActiveWorkbook
Set wsData = wb.Worksheets(1)
With wsData
lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
.Columns(6).Copy Destination:=.Columns(lastCol + 1)
.Columns(lastCol + 1).TextToColumns _
DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 3), Array(12, 9))
Set rngData = .Cells(1).CurrentRegion
End With
Set wsTemp = wb.Worksheets.Add
With wsTemp
rngData.Columns(lastCol + 1).AdvancedFilter _
Action:=xlFilterCopy, _
copytorange:=.Cells(1), _
unique:=True
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
For Each Cell In .Range("A2:A" & lRow)
rngData.AutoFilter field:=(lastCol + 1), Criteria1:="=" & Cell.Value
Set WSnew = wb.Worksheets.Add(after:=Worksheets(Worksheets.Count))
WSnew.Name = Cell.Value
rngData.SpecialCells(xlCellTypeVisible).Copy
With WSnew
With .Range("A1")
.PasteSpecial xlPasteColumnWidths
.PasteSpecial xlPasteValuesAndNumberFormats
End With
.Columns(lastCol + 1).Delete
End With
Application.CutCopyMode = False
Next
End With
With wsData
.AutoFilterMode = False
.Columns(lastCol + 1).Delete
End With
Application.DisplayAlerts = False
wsTemp.Delete
Application.DisplayAlerts = True
Set rngData = Nothing
Set WSnew = Nothing: Set wsTemp = Nothing: Set wsData = Nothing
Set wb = Nothing
End Sub