XL 2010 Macro pour supprimer doublons avec une condition

Jauster

XLDnaute Occasionnel
Bonjour,

Je ne sais pas comment m'y prendre pour avoir une macro qui va supprimer les doublons de la colonne B (fichier ci-joint), mais en gardant uniquement la ligne des deux derniers chiffres les plus grands de la colonne A.
En effet, la colonne B est soit composée de :
- Tous les caractères de la cellule en colonne A sans les deux derniers si il n'y a qu'une lettre au début
- Tous les caractères de la cellule en colonne A si il y a 3 lettres au début
Les lettres sont toujours au début de la chaîne de caractères.
La colonne A n'est pas forcement triée par ordre croissant.

En rouge-gras le résultat souhaité après avoir supprimé les doublons
 

Pièces jointes

  • Classeur3.xlsx
    9.2 KB · Affichages: 43
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Jauster,

Voyez le fichier joint, les formules en colonnes B et C et la macro du bouton :
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If FilterMode Then ShowAllData 'si la feuille est filtrée
[A:C].Copy [E1]
With Intersect([E:G], UsedRange.EntireRow)
  .Value = .Value 'supprime les formules
  .Sort [G1], xlDescending, Header:=xlYes 'tri décroissant sur la colonne G
End With
[E1].CurrentRegion.RemoveDuplicates Columns:=2, Header:=xlYes 'supprime les doublons
End Sub
A+
 

Pièces jointes

  • Doublons(1).xlsm
    27 KB · Affichages: 43

job75

XLDnaute Barbatruc
Re,

Bien sûr on peut se passer des colonnes B et C :
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If FilterMode Then ShowAllData 'si la feuille est filtrée
[D:E].Insert 'insertion de 2 colonnes auxiliaires
[A:A].Copy [C1]
With Intersect([C:E], UsedRange.EntireRow)
  .Columns(2) = "=LEFT(C1,LEN(C1)-2*ISNUMBER(-MID(C1,2,1)))"
  .Columns(3) = "=RIGHT(C1,2)+ROW()/1000000000"
  .Value = .Value 'supprime les formules
  .Sort [E1], xlDescending, Header:=xlYes 'tri décroissant sur la colonne E
End With
[C1].CurrentRegion.RemoveDuplicates Columns:=2, Header:=xlYes 'supprime les doublons
[D:E].Delete 'suppression des colonnes auxiliaires
End Sub
Fichier (2).

A+
 

Jauster

XLDnaute Occasionnel
J'ai intégré cette macro à une autre macro (grace à Call NomDeLaMacro) qui va me chercher les données dans un autre classeur pour les coller en colonne A, mais il m'affiche une erreur :
"Erreur de compilation: Sub ou Function non définie".

Est-ce parce que c'est une private Sub ?
 
Dernière édition:

Discussions similaires