Sélection de lignes suivant dates

Résolu
kit24be Messages postés 48 Statut Membre -  
kit24be Messages postés 48 Statut Membre -
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

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    En VBA, sélectionner est une mauvaise méthode, expliques plutôt ce que tu voudrais faire des données concernées.
    0
  2. kit24be Messages postés 48 Statut Membre 1
     
    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
  3. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  4. kit24be Messages postés 48 Statut Membre 1
     
    Bonjour,
    cela fonctionne très bien
    un très grand merci
    Bon dimanche
    0