Générer un n° manquant ou incrémenter sur une bdd

Bonjour forum,

Je souhaite trouver une solution pour générer un numéro sur une base de données.

Je m'explique, sur la feuille "Article" du fichier joint, chaque article a un N°GENICLIME (C'est le nom de ma boite ). Certains numéros sont manquants.

Exemple : Pour l'article "Arbalete", les numéros sont 1, 5 et 6.

Lors de l'ajout d'un article sur cette base de données grâce à un formulaire, je souhaite générer un numéro qui prenne en priorité un numéro manquant (par exemple n°2) avant d'aller incrémenter un numéro à la suite (par exemple 7).

Le code correspondant sera lancé par le clic d'un bouton sur l'USF "ajout_article" à la ligne 200.

Malgré mes nombreux essais, je dois avouer que je n'arrive pas à coder la boucle qui y parviendrais ...

Est ce que l'un d'entre vous à déjà élucidé ce mystère et pourrait m'aider svp ?

16bdd-test.xlsm (636.15 Ko)

bonjour,

une proposition

Private Sub Generation_noGeniclime()
    Debug.Print (article)

    'Contrôle de article caption
    If ComboBox_article.Value = "" Then
        MsgBox ("Veuillez renseigner la dénomination de l'article pour générer un numéro.")
        Exit Sub
    Else
    End If

    'tri des valeurs du tableau article par ordre alphabétique + ordre croissant n°Geniclime
    ActiveWorkbook.Worksheets("Article").ListObjects("bdd_article").Sort. _
    SortFields.Clear
    ActiveWorkbook.Worksheets("Article").ListObjects("bdd_article").Sort. _
    SortFields.Add2 Key:=Range("bdd_article[Article]"), SortOn:=xlSortOnValues _
    , Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Article").ListObjects("bdd_article").Sort. _
    SortFields.Add2 Key:=Range("bdd_article[N° GENICLIME]"), SortOn:= _
    xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Article").ListObjects("bdd_article").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    'Déclaration des variables
    Dim DLN As Long
    Dim rgN As Range
    Dim NG As Integer

    Set rgN = Range("bdd_article")
    DLN = rgN.End(xlDown).Row
    NG = 1
    at = False 'at=article trouvé
    For i = 1 To DLN
        If rgN.Cells(i, 1).Value = article Then
            at = True
            If rgN.Cells(i, 6) = NG Then
                NG = NG + 1
            Else
                Exit For
            End If
        ElseIf at Then
            Exit For
        End If
    Next i
    Label_noGeniclime = NG
End Sub

Bonjour,

Pour le fun !...

Voir les Userforms Ajout….

J'en ai profité pour ajouter la procédure de h2so4 qui fonctionne très bien.

Cdlt.

16bdd-test.xlsm (637.57 Ko)

Merci H2SO4, effectivement comme tu l'as écrit ça semble évident et je me dis pourquoi je n'y ai pas pensé plus tôt

Merci également à toi Jean-Eric Même si tout n'est pas très clair encore, je regarderai ça plus attentivement lundi

Rechercher des sujets similaires à "generer manquant incrementer bdd"