Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

bonne journée !
 
Dernière édition:
Re,
Un petit rajout à la macro !
VB:
Option Explicit

Sub test()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To 10
Cells(i, 1) = i & Cells(i, 1)
Next i
Application.ScreenUpdating = True
End Sub
@+
 
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:
re mapomme,

Merci pour ta proposition,

Quand j'efface les données, il met une erreur, pour ce faire la taille des cellules fusionnées doit être identique et renvois sur la macro de tri... et les numéros ne s'efface pas....pour le reste pas de problèmes...

Oli
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…