Au lieu de boucler sur toutes les cellules, plus efficace est d'utiliser un filtre ou une recherche …
Code à insérer dans le module de classe de la feuille à traiter :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Sub Demo()
Dim Deb As Range, Fin As Range
If Me.[C1].Value = "" Then Beep: Exit Sub
Application.ScreenUpdating = False
Set Deb = Me.[B1]
With Deb.CurrentRegion.Columns(2)
Set Fin = .Find(Deb.Value, Deb, xlValues, xlWhole, , , True)
Do Until Fin.Address = Deb.Address
Range(Deb(3, 0), Fin(0, 0)).Value = Deb(, 2).Value
Deb.Resize(2).EntireRow.Delete
Set Deb = Fin
Set Fin = .FindNext(Fin)
Loop
Range(Deb(3, 0), .Cells(.Rows.Count)(1, 0)).Value = Deb(, 2).Value
Deb.Resize(2).EntireRow.Delete
.Offset(, -1).AutoFit
End With
Set Deb = Nothing: Set Fin = Nothing
Me.Columns(3).ColumnWidth = Me.StandardWidth
Application.ScreenUpdating = True
End Sub |
Pour l'intégrer dans un autre type de module, remplacer
Me par un objet représentant la feuille (
Feuil1,
Worksheets) …
__________________________________________________________________________________________
Merci de cliquer sur

pour chaque message ayant aidé puis sur

pour clore cette discussion …
__________________________________________________________________________________________
Pour s'endormir, un mouton ne peut compter que sur lui-même …
Partager