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 -
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

3 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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

    0
  2. mailmxd Messages postés 5 Statut Membre
     
    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
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Re
      VBA n'est pas à ce point là dans ma spécialité et donc je ne saurais pas placer le N° en automatique dans une cellule de cette colonne
      Mais il y en a surement ici des meilleurs qui pourront résoudre votre problème
      crdlmnt
      0
    2. mailmxd Messages postés 5 Statut Membre
       
      Bonjour Vaucluse.
      Aucun souci la première réponse convenait déjà et avait en grande partie répondu à mon besoin.
      Merci pour le coup de main
      Bonne journée
      MAILMXD
      0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    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
    0
    1. mailmxd Messages postés 5 Statut Membre
       
      Bonjour Eric, et merci beaucoup :)

      Suis impressionné par tout ce code.
      J'ai voulu aller voir le lien que est inscrit en fin de commentaire.... et tombe sur une page "JE T'EST KILL HACKED / DEFACED par KILL FLOW."

      C'est normal ?????????????

      (juste pour info) Bonne journée
      MXD
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Ah non, pas normal du tout. Le site c'est fait hacker, dommage.
      Nouveau site de dépot : https://mon-partage.fr/f/FeyJ70z6/

      eric
      0
    3. mailmxd Messages postés 5 Statut Membre
       
      OK reçu.
      Il est cool ce petit code.
      Encore merci
      à la prochaine
      MAILMXD
      0