Trouver le prochain numéro dans une liste, par catégorie
Résolu
mailmxd
Messages postés
5
Statut
Membre
-
mailmxd Messages postés 5 Statut Membre -
mailmxd Messages postés 5 Statut Membre -
Bonjour, j'ai un tableau qui liste les documents de mon service.
Les documents sont divisés en groupe. Chaque groupe a sa numérotation chronologique propre. Comment faire pour identifier le prochain numéro disponible pour un groupe considéré (par exemple indiqué en cellule LiCi).
Merci pour votre aide
Grpe chrono
A 01
A 02
B 01
C 01
A 03
C 02
B 02
A ?
Je suis novice en macro et VB,
Merci encore de prêter attention à ma requête
MXD
Les documents sont divisés en groupe. Chaque groupe a sa numérotation chronologique propre. Comment faire pour identifier le prochain numéro disponible pour un groupe considéré (par exemple indiqué en cellule LiCi).
Merci pour votre aide
Grpe chrono
A 01
A 02
B 01
C 01
A 03
C 02
B 02
A ?
Je suis novice en macro et VB,
Merci encore de prêter attention à ma requête
MXD
A voir également:
- Trouver le prochain numéro dans une liste, par catégorie
- Liste déroulante excel - Guide
- Numéro père noël whatsapp - Accueil - Messagerie instantanée
- Numero prive - Guide
- Trouver adresse mac - Guide
- Liste numéro indésirable - Guide
3 réponses
Bonjour
il y a peut être et sauf erreur un moyen simple de constituer le N° suivant selon votre modéle:
pour l'exemple, la liste de votre message en A et B à partir de A2
groupe en A, chrono en B
en B2 la formule:
=SI(A2="";"";TEXTE(NB.SI($A$2:A2;A2);"00"))
vous affichera le N° d'ordre suivant pour le groupe inscrit en A
Attention aux signes $ sur le premier A1 et pas sur le second
Le code texte formate la valeur trouvée de façon à obtenir la présentation à deux chiffres de votre demande (définie par "00")
crdlmnt
il y a peut être et sauf erreur un moyen simple de constituer le N° suivant selon votre modéle:
pour l'exemple, la liste de votre message en A et B à partir de A2
groupe en A, chrono en B
en B2 la formule:
=SI(A2="";"";TEXTE(NB.SI($A$2:A2;A2);"00"))
vous affichera le N° d'ordre suivant pour le groupe inscrit en A
Attention aux signes $ sur le premier A1 et pas sur le second
Le code texte formate la valeur trouvée de façon à obtenir la présentation à deux chiffres de votre demande (définie par "00")
crdlmnt
Un grand Merci "Vaucluse".
Cela répond à la question telle que je l'ai formulée.
Est ce que je peux "abuser" néanmoins, car je voulais traiter la liste comme une base de données. Je cherche à faire une macro, qui scrute la liste et renvoie le numéro chrono à utiliser compte tenu de ceux dejà pris.
Voila c'est plus dans ce sens que je posais ma question. Si trop problèmatique, j'édite et mets RESOLU.
A bientôt
MXD
Cela répond à la question telle que je l'ai formulée.
Est ce que je peux "abuser" néanmoins, car je voulais traiter la liste comme une base de données. Je cherche à faire une macro, qui scrute la liste et renvoie le numéro chrono à utiliser compte tenu de ceux dejà pris.
Voila c'est plus dans ce sens que je posais ma question. Si trop problèmatique, j'édite et mets RESOLU.
A bientôt
MXD
Bonjour à tous,
J'ai supposé les n° déjà inscrits obligatoirement croissants.
La colonne B doit être au format Texte.
https://www.cjoint.com/c/DBBt3XLPPBU
eric
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig As Long, lig As Long, data As Variant
If Target.Count > 1 Then Exit Sub
If Target.Row = 1 Or Target.Column <> 1 Or Target = "" Then Exit Sub
On Error GoTo fin
derlig = Cells(Rows.Count, "A").End(xlUp).Row
data = [A2].Resize(derlig - 1, 2)
Application.EnableEvents = False
For lig = UBound(data) - 1 To 1 Step -1
' recherche dernier index du groupe
If LCase(data(lig, 1)) = LCase(Target) Then
Target.Offset(, 1) = Format(CLng(data(lig, 2)) + 1, "00")
Target.Offset(1).Select
Exit For
End If
Next lig
' si groupe non trouvé
If lig = 0 Then Target.Offset(, 1) = "01"
fin:
Application.EnableEvents = True
End Sub
J'ai supposé les n° déjà inscrits obligatoirement croissants.
La colonne B doit être au format Texte.
https://www.cjoint.com/c/DBBt3XLPPBU
eric