Sélection de lignes suivant dates

Résolu/Fermé
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 - 16 oct. 2017 à 09:37
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 - 22 oct. 2017 à 18:04
Bonjour,

Je ne sais pas comment faire pour sélectionner en VBA toutes les lignes des trois premiers mois de ma base de données. En sachant que j’ai en colonne E les dates, les heures et les minutes, quelqu’un peut il m’aider ?
Merci d’avance


4 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
16 oct. 2017 à 12:32
Bonjour,

En VBA, sélectionner est une mauvaise méthode, expliques plutôt ce que tu voudrais faire des données concernées.
0
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 1
20 oct. 2017 à 11:45
Bonjour,
en colonne E, les dates, heures et minute.
plusieurs fois par jour des données sont encodés de la colonne F a Z,
pour réduire le nombre de lignes de mon classeur, je ne veux garder que les trois derniers mois et transférer les autres dans un autres classeur.
Merci d' avance
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
22 oct. 2017 à 12:21
Bonjour,

Essayer ce code

Sub archivage()
Dim feuille As Worksheet
Dim date_moins_3mois As Date, mois_ref As String, mois As String
Dim date_mvt As Range, ligne_titre As Range, lignes_à_archiver As Range

'// Assignation feuille mouvements
Set feuille = Sheets("Feuil1")

'// stockage des lignes à archiver
date_moins_3mois = DateAdd("m", -3, Date)
mois_ref = Format(Year(date_moins_3mois), "0000") & Format(Month(date_moins_3mois), "00")
For Each date_mvt In feuille.UsedRange.Columns("E").Rows
'stockage ligne titre
If date_mvt.Row = feuille.UsedRange.Row Then Set ligne_titre = date_mvt.EntireRow
'stockage lignes dont la date est supérieure de 3 mois à celle en cours
If IsDate(date_mvt) Then
mois = Format(Year(date_mvt), "0000") & Format(Month(date_mvt), "00")
If mois < mois_ref Then
If lignes_à_archiver Is Nothing Then Set lignes_à_archiver = date_mvt.EntireRow _
Else Set lignes_à_archiver = Union(lignes_à_archiver, date_mvt.EntireRow)
End If
End If
Next date_mvt

'// copie des lignes à archiver dans nouveau classeur
feuille.Copy: Sheets(1).Cells.Clear 'création nouveau classeur avec format de l'ancien
ligne_titre.Copy Sheets(1).Range("A1") 'copie ligne titre dans nouveau classeur
lignes_à_archiver.Copy Sheets(1).Range("A2") 'copie lignes à archiver dans nouveau classeur
ActiveWorkbook.SaveAs Filename:="Archive_du_" & mois_ref, FileFormat:=xlOpenXMLWorkbook 'sauvegarde nouveau classeur

'// suppression des lignes à archiver dans classeur d'origine
lignes_à_archiver.Delete
End Sub

0
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 1
22 oct. 2017 à 18:04
Bonjour,
cela fonctionne très bien
un très grand merci
Bon dimanche
0