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

XL 2010 Formule sur Numérotation de ligne

  • Initiateur de la discussion Initiateur de la discussion tinet
  • Date de début Date de début

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 !

tinet

XLDnaute Impliqué
Bonjour le forum,




je cherche une formule pour indiquer dans mon tableau le nombre de lignes identiques, et les numéroter en ordre croissant.


Colonne A les Numéros identique
En colonne B la numérotation par ordre croissant
Les chiffres de la colonne A varient en termes de nombre

Exemple
A B
1 1
1 2
1 3
1 4
2 1
2 2
2 3
3 1
4 1
4 2
4 3
4 4
4 5

Etc. etc.
 
Bonjour tinet,

Le code VBA le plus simple (et le plus rapide) utilise la même formule :
Code:
Sub Numeroter()
With [A1].CurrentRegion
  If Rows.Count = 1 Then Exit Sub
  .Sort .Columns(1), xlAscending, Header:=xlYes 'tri avec en-têtes
  .Cells(2, 2).Resize(.Rows.Count - 1) = "=IF(RC[-1]<>R[-1]C[-1],1,N(R[-1]C)+1)"
  .Columns(2) = .Columns(2).Value 'supprime les formules, facultatif
End With
End Sub
Edit : j'ai ajouté la fonction N() en cas de titre en B1...

A+
 
Dernière édition:
Re,

Une formule plus simple et plus légère (en nombre d'octets) :
Code:
=(A2=A1)*N(B1)+1
ce qui donne en VBA :
Code:
Sub Numeroter()
With [A1].CurrentRegion
  If Rows.Count = 1 Then Exit Sub
  .Sort .Columns(1), xlAscending, Header:=xlYes 'tri avec en-têtes
  .Cells(2, 2).Resize(.Rows.Count - 1) = "=(RC[-1]=R[-1]C[-1])*N(R[-1]C)+1"
  .Columns(2) = .Columns(2).Value 'supprime les formules, facultatif
End With
End Sub
A+
 
Bonjour

Job, « Ce qui est simple pour certains peut ne pas l’être pour d’autres et inversement. » 😉.

L’outil Tableau permet de faciliter bien des choses (quand on le connait bien sûr)

VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
  If R.Address <> [B1].Address Then Exit Sub
  [Tbo].Sort [Tbo].Item(1, 1), , Header:=1
  [Tbo].Item(1, 2).FormulaLocal = "=SI(A2=A1;B1+1;1)"
  [Tbo[B]] = [Tbo[B]].Value
End Sub

3 lignes, en dehors de l’appel qui peut se faire autrement, assez brèves non ?
 

Pièces jointes

Re

Tu as raison Job, avec un bouton d’appel, le code devient

VB:
Private Sub CommandButton2_Click()
    [Tbo].Sort [Tbo].Item(1, 1), , Header:=1
    [Tbo].Item(1, 2).FormulaR1C1 = "=IF(RC[-1]=R[-1]C[-1],R[-1]C+1,1)"
    [Tbo[B]] = [Tbo[B]].Value
End Sub
 
- 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

  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
149
Réponses
15
Affichages
251
Réponses
7
Affichages
176
Réponses
7
Affichages
147
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…