Suppression de lignes

bonjour,

je fais un extraction d'un fichier afin d'obtenir une feuille avec des infos sur des véhicules.

en colonne "C" j'ai le nom du véhicule, en colonne "Z" j'ai une date.

j'aimerais pouvoir ne garder qu'une fois le véhicule avec les conditions suivantes:

  • si il y a par exemple trois ligne sur un véhicule je ne garde que le ligne avec la date la plus récente en "Z".
  • si par exemple sur un véhicule j'ai deux lignes et qu'elles ont la même date je n'en garde qu'une peut importe la ligne.

ceci afin d'obtenir une feuille avec une seule ligne par véhicule.

merci pour votre aide.

ci-joint un fichier test.

11test-2.xlsm (107.06 Ko)

Bonjour,

A tester

8test-2.xlsm (117.24 Ko)

bonjour,

merci pour ce code. Je viens de tester et j'ai le message d'erreur en piéce jointe?

capture

bonjour,

personne pour me venir en aide sur cette erreur?

bonne journée

Re,

Tu as le message d'erreur sur le classeur que j'ai posté, ou sur ton classeur

Ensuite cela vient peut-être aussi de ton PC qui est un MAC à voir la version d'Excel

message d'erreur sur le fichier que tu as fait.

je suis en W10.

Re,

Bizarre,

Teste en lançant la macro en pas à pas pour repérer la ligne qui produit l'erreur

voilà une copie d'écran de l'endroit de l'erreur.

capture

Re,

Es tu sur de ne pas avoir modifié "Feuill" avecdeux "L" et "Feuil1" avec le chiffre UN

Sub test()
  Dim Dl%, i%
  Dl = Range("A" & Rows.Count).End(xlUp).Row
  Columns("A:AD").Select
  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range( _
      "E2:E" & Dl), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range( _
      "Z2:Z" & Dl), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
      .SetRange Range("A1:AD" & Dl)
      .Header = xlYes
      .Apply
    End With

    For i = Dl To 2 Step -1
      If Cells(i + 1, 5).Value = Cells(i, 5).Value Then
        Rows(i).Delete Shift:=xlUp
      End If
    Next i

  Dl = Range("A" & Rows.Count).End(xlUp).Row
  Columns("A:AD").Select
  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range( _
      "A2:A" & Dl), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
      .SetRange Range("A1:AD" & Dl)
      .Header = xlYes
      .Apply
    End With
End Sub

Bonjour

peux être comme ca

Sub Macro1()
Dim I&, Onglet$
Onglet = "Feuil1" ' mettre le nom de l'onglet
'
Dl = Range("A" & Rows.Count).End(xlUp).Row
    Columns("A:Z").Select
    ActiveWorkbook.Worksheets(Onglet).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(Onglet).Sort.SortFields.Add Key:=Range("E2:E" & Dl _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets(Onglet).Sort.SortFields.Add Key:=Range("Z2:Z" & Dl _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(Onglet).Sort
        .SetRange Range("A1:Z" & Dl)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    For I = Dl To 2 Step -1
      If Cells(I + 1, 5).Value = Cells(I, 5).Value Then
        Rows(I).Delete Shift:=xlUp
      End If
    Next I
End Sub

A+

Maurice

non j'ai rien changé par rapport au fichier que tu as fourni

c'est tout bon merci pour votre aide

Rechercher des sujets similaires à "suppression lignes"