Générer numéro inventaire +1

Bonjour,

Je souhaiterai par le biais d'une macro dans un projet plus vaste, pouvoir générer un numéro d'inventaire en tenant compte du dernier créé.

Exemple : 22CR1 -> 22CR1(+1) = 22CR2

Je coince sur le fait que les numéros en question sont dans une plage comportant différents "types" de numéro.

Exemple : 22CR1 ; 22CR2 ; 22IP1 ; 22CR3 ... si je veux créer un 22IP, il doit créer le 22IP2. Pour un 22CR, un 22CR4 .... ainsi de suite.

Ci-joint un exemple.

13exemplebob.xlsm (17.76 Ko)

Merci de votre aide !

BOB

Bonjour Bob Sheriff, le forum,

A tester.....c'est un peu biscornu mais semble fonctionnel...

Private Sub CommandButton1_Click()
 Dim cherche As Range, lig%

 With Sheets("Feuil1")
  For lig = .Range("B" & Rows.Count).End(xlUp).Row To 1 Step -1
   If .Cells(lig, 2) Like Me.TextBox1.Value & Me.ComboBox1.Value & "*" Then
    num = Replace(Replace(.Cells(lig, 2), TextBox1.Value, ""), ComboBox1.Value, "")
    .Cells(.Range("B" & Rows.Count).End(xlUp).Row + 1, 2) = Me.TextBox1.Value & Me.ComboBox1.Value & num + 1
    Exit For
   End If
  Next lig
 End With
End Sub
7exemplebob.xlsm (21.25 Ko)

Cordialement,

Bonjour le fil, bonjour le forum,

Grillé par XorSankukai ! Que je salue au passage.

Une autre proposition, mais si tu as plus de 2 clés il faudra passer, comme lui, par une UserForm...

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim R As Integer 'définit la variable R (Réponse)
Dim C As String 'déclare la variable C (Clé)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim M As Integer 'déclare la variable M (Maximum)

Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("B2").CurrentRegion 'définit le tableau des valeurs TV
R = MsgBox("CR = Oui / IP = Non", vbYesNo, "Quelle Clé ?") 'définit la réponse R
C = IIf(R = vbYes, "CR", "IP") 'définit la clé C
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
    If InStr(1, TV(I, 1), C, vbTextCompare) <> 0 Then 'si la clé est contenue dans la donnée ligne I colonne 1 de TV
        K = K + 1 'incrémente K
        ReDim Preserve TL(1 To K) 'redimensionne les tableau des lignes TL (K lignes)
        TL(K) = CInt(Split(TV(I, 1), C)(1)) 'récupère le texte après la clé et le convertit en entier
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
M = Application.WorksheetFunction.Max(Application.Transpose(TL)) + 1 'définit le maximum M
'renvoie dans la première cellule vide de la colonne B  de l'onglet O :  "22", suivi de la clé C, suivi de M
O.Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0).Value = "22" & C & M
End Sub

Bonjour Messieurs,

Merci pour votre réactivité =)

J'ai réussi à adapter la solution de XorSankukai ! Le seul soucis (que je n'arrive pas à résoudre seul) est que si la base ne comporte pas le premier "exemple" (ex : 22CR1) il ne le crée pas ... et pour ainsi dire ne crée rien =P une idée ?

ThauThème, je vais en effet, à terme, avoir plus de 2 clés... Merci pour ta proposition ^^

Re,

Alors un mix avec ton fichier modifié en pièce jointe. À chaque double-clic dans une clé le numéro incrémenté sera créé. touches [Échap.] ou [Entrée] pour sortir...

4bob-ep-v01.xlsm (22.35 Ko)

Re,

Un autre essai....

9exemplebob-v2.xlsm (23.65 Ko)

Cordialement,

Ca fonctionne parfaitement !

Merci à tous =)

Rechercher des sujets similaires à "generer numero inventaire"