Ajout d'un numéro en fonction d'un classement avec doublons vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thespeedy20

XLDnaute Occasionnel
Bonjour,

J'ai un classement qui s'effectue automatiquement sur ma feuille et j'aimerais lui ajouter un numéro également automatique....
ex : aaa
aaa
bbb
ccc
ccc

Cela donnerait :

1 aaa
1 aaa
2 bbb
3 ccc
3 ccc
4 ddd


Merci d'avance pour votre aide

Oli
 

Pièces jointes

Bonjour à tous,
Je n'ai pu obtenir ton fichier !
Peut-être ceci !
VB:
Option Explicit

Sub test()
Dim i As Long
For i = 1 To 10
Cells(i, 1) = i & Cells(i, 1)
Next i
End Sub
macro.jpg

bonne journée !
 
Dernière édition:
Bonjour à tous,

Si la colonne B est triée (ce que je pense avoir compris), alors :
  • En A18 mettre la formule : =SI(B18=B17;SOMME(A17);SOMME(A17;1))
  • Copier/tirer la formule vers le bas
Ou bien formule plus simple : =SOMME(A17;B18<>B17)
 
Dernière édition:
RE,

en B18, je note olivier, par defaut, la cellule A18 est égale à 1

en B19 , je note Bernard
en B20 je note Alain
en B21, je note Olivier

Donc le classement devient :
Col A Col B
1 Alain
2 Bernard
3 Olivier
3 Olivier

et je peux encore ajouter des noms... il trie et réattribue des numéros au nouveau classement

Oli
 
Re,

Essayez ce code à mettre dans le module de la feuille "Feuil1":
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then Call Trier: Call numeroter
End Sub

Sub Trier()
   Dim LastRow As Long
   LastRow = ActiveSheet.Range("B18").End(xlDown).Row
   Range("B18:C" & LastRow).Sort Key1:=Range("B18"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
      MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
End Sub

Sub numeroter()
   Dim LastRow As Long, i As Long
   LastRow = Range("B18").End(xlDown).Row
   Range("a18:a" & LastRow).FormulaR1C1 = "=SUM(R[-1]C,RC[1]<>R[-1]C[1])"
   Range("a18:a" & LastRow) = Range("a18:b" & LastRow).Value
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
2 K
J
Réponses
1
Affichages
691
J
Retour