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