Boucle supression ligne VBA Excel

[Résolu/Fermé]
Signaler
Messages postés
4
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
25 février 2006
-
Messages postés
4
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
25 février 2006
-
Salut a tous !

Me suis plante dans message precedent, sorry...

Besoin de votre aide pour un probleme certainement trop facile pour vous :

feuille excel avec trois colonne :

Jean 21 3/21/2005
Jean 21 4/21/2005
Jean 21 4/21/2005
Pierre 21 7/24/2005
Pierre 21 7/24/2005
Pierre 21 8/12/2005
Paul 34 5/23/2005
Paul 34 6/23/2005
Paul 34 6/23/2005


Je cherche a ne garder que la derniere ligne par nom.

Voila unchemin que j'ai commence :

Private Sub boucle()
'éliminer les lignes en trop

'Variables compteur
Dim actualLine As Integer 'variable compteur: ligne en traitement
Dim countline As Integer 'variable compteur: lignes totales
'*************************
'Variables traitement
Dim dateA As Date 'première date
Dim dateB As Date 'deuxième date
Dim prevname As String 'premier nom
Dim nameB As String 'deuxième nom

'Initialisation des variables
countline = 0
actualLine = 0
dateA = 0
dateB = 0
prevname = ""
nameB = ""
'Range("A1").Select

'traitement des données

'Count(Columns("A:A")) à revoir, compter les lignes
Range("A1").Select
countline = Range(Selection, Selection.End(xlDown)).Count


dateA = ActiveCell.Offset(actualLine, 2)
dateB = ActiveCell.Offset(actualLine + 1, 2)
prevname = ActiveCell.Offset(actualLine, 0)
nameB = ActiveCell.Offset(actualLine + 1, 0)

'boucle de traitement
For actualLine = 1 To countline
'test des données
If (prevname = nameB) And (dateA <= dateB) Then
'action


Et la il faudrait la phrase magique qui elimine la ligne en cours de traitement ! Suis-je sur la bonne route, y en a t il une de plus facile ?

Merci pour votre aide !

1 réponse

Messages postés
1846
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
31 août 2021
1 473
Bonjour rando13,

Si vraiment tu veux ne conserver que la dernière ligne par nom, tu peux utiliser quelque chose comme :
Sub SuppressionDoublons()
    
  Dim CelluleCourante As Range
  Dim CelluleSuivante As Range
  
  Application.ScreenUpdating = False
  
  Set CelluleCourante = ActiveCell
  Do While Not IsEmpty(CelluleCourante)
    Set CelluleSuivante = CelluleCourante.Offset(1, 0)
    If CelluleSuivante.Value = CelluleCourante.Value Then
      CelluleCourante.EntireRow.Delete
    End If
    Set CelluleCourante = CelluleSuivante
  Loop

End Sub
Il suffit que tu sélectionnes la première cellule de la colonne qui te sert de critère (le premier "Jean" de ta liste).
C'est le moteur. Tu adaptes...
Messages postés
4
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
25 février 2006

Hello Armojax !

Pourquoi faire simple quand on peut faire compliquer... hem...

J'étais vraiment parti sur le mauvais chemin !

Merci beaucoup !

Exactement ce que je voulais !

Meric !