XL 2013 Etablir un RANG particulier

esftel

XLDnaute Occasionnel
Bonjour,

Je souhaiterais une numérotation automatique (solution formule) genre "Rang" en fonction du nom du groupe dans une autre colonne....

Exemple :
Colonne A (Numérotation automatique
Colonne B
1​
Groupe 20
1​
Groupe 20
2​
Groupe 8
1​
Groupe 20
2​
Groupe 8

Voir aussi l'exemple en fichier joint

Merci de votre attention et de votre aide,

Franck T.
 

Pièces jointes

  • Exemple EXLDOW.xlsx
    10.1 KB · Affichages: 10

esftel

XLDnaute Occasionnel
Le résultat donné par JHA n'est pas du tout celui que vous indiquez dans le fichier du post #1 !!!

Mais bon si vous voulez numéroter dans l'ordre de survenance voyez cette formule en F2 :
Code:
=SI(LIGNE()=EQUIV(G2;G$1:G2;0);MAX(F$1:F1)+1;INDEX(F$1:F1;EQUIV(G2;G$1:G1;0)))
Hé top, j'avais pas vu votre message, c'est super !

En effet, le première proposition de JHA, n'affichait pas la même numérotation mais la logique était là !
Ce qui ne me convenait pas c'était ca table de correspondance .....

En tout cas beau travail, je ne l'aurais pas trouvé celle là..... merci
 

sousou

XLDnaute Barbatruc
avec une macro on sait jamais
Sub rang()
ReDim tableau(0)
With Sheets(1).ListObjects("tableau1")

MsgBox .DataBodyRange.Rows.Count

For n = 1 To .DataBodyRange.Rows.Count
Set i = .DataBodyRange.Columns(1).Rows(n)
If existe(i) = False Then
ReDim Preserve tableau(UBound(tableau) + 1)
tableau(UBound(tableau)) = i
End If
Next

With Sheets(1).ListObjects("tableau1")
For Each i In .DataBodyRange.Columns(2).Rows
'MsgBox i.Address
i.Value = rg(i)
Next
End With
End With
End Sub
Function existe(valeur)
existe = False

For n = 0 To UBound(tableau)
If valeur = tableau(n) Then existe = True
Next
End Function
Function rg(valeur)
For n = 0 To UBound(tableau)
'MsgBox valeur.Offset(0, -1)
If valeur.Offset(0, -1) = tableau(n) Then rg = n: Exit Function
Next
End Function
 

esftel

XLDnaute Occasionnel
avec une macro on sait jamais
Sub rang()
ReDim tableau(0)
With Sheets(1).ListObjects("tableau1")

MsgBox .DataBodyRange.Rows.Count

For n = 1 To .DataBodyRange.Rows.Count
Set i = .DataBodyRange.Columns(1).Rows(n)
If existe(i) = False Then
ReDim Preserve tableau(UBound(tableau) + 1)
tableau(UBound(tableau)) = i
End If
Next

With Sheets(1).ListObjects("tableau1")
For Each i In .DataBodyRange.Columns(2).Rows
'MsgBox i.Address
i.Value = rg(i)
Next
End With
End With
End Sub
Function existe(valeur)
existe = False

For n = 0 To UBound(tableau)
If valeur = tableau(n) Then existe = True
Next
End Function
Function rg(valeur)
For n = 0 To UBound(tableau)
'MsgBox valeur.Offset(0, -1)
If valeur.Offset(0, -1) = tableau(n) Then rg = n: Exit Function
Next
End Function
Bonjour,

C'est super gentil pour la macro, mais je ne peux pas utiliser de macro, trop contraignant pour notre réseau d'entreprise.....
en tout cas merci, je la garde au cas ou ?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 235
Messages
2 086 476
Membres
103 228
dernier inscrit
malik832