Boucle supression ligne VBA Excel

Résolu/Fermé
rando13 Messages postés 4 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 25 février 2006 - 23 févr. 2006 à 22:49
rando13 Messages postés 4 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 25 février 2006 - 24 févr. 2006 à 17:41
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 mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 528
24 févr. 2006 à 07:59
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 jeudi 23 février 2006 Statut Membre Dernière intervention 25 février 2006
24 févr. 2006 à 17:41
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