Boucle supression ligne VBA Excel

Résolu
rando13 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
rando13 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

1 réponse

Armojax Messages postés 1860 Date d'inscription   Statut Membre Dernière intervention   1 528
 
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...
0
rando13 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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 !
0