Sélection de lignes suivant dates

Résolu
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. Bonjour,
    cela fonctionne très bien
    un très grand merci
    Bon dimanche
    1. 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

      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
        1. Bonjour,

          En VBA, sélectionner est une mauvaise méthode, expliques plutôt ce que tu voudrais faire des données concernées.