Private Sub ComboBox1_Change()
Dim C As String, Txt As String, Num As String, x As Byte, L As Long
[COLOR="Green"]'sans commentaire[/COLOR]
With Sheets("Source")
[COLOR="Green"]'on désactive le filtre au cas où[/COLOR]
.AutoFilterMode = False
[COLOR="Green"]'on trie par ordre croissant la colonne A, très important pour la suite[/COLOR]
.Range("A5:K" & .UsedRange.Rows.Count).Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess
[COLOR="Green"]'on applique un filtre sur la colonne A avec combo1 comme critère[/COLOR]
.Range("A6").AutoFilter Field:=3, Criteria1:=ComboBox1
[COLOR="Green"]'on détecte la dernière ligne L de la plage filtrée et on obtient la cellule à incrémenter[/COLOR]
L = .Cells.SpecialCells(xlCellTypeVisible).End(xlDown).Row
[COLOR="Green"]'on boucle sur tous caractères de la cellule(ligne L, colonne 1)[/COLOR]
For x = 1 To Len(.Cells(L, 1))
'[COLOR="Green"]on extrait la valeur de chaque caractère C[/COLOR]
C = Mid(.Cells(L, 1), x, 1)
'[COLOR="Green"]s'il n'est pas numérique ou s'il est égal à "0"[/COLOR]
If Not IsNumeric(C) Or C = "0" Then
[COLOR="Green"] 'alors on l'ajoute à la suite de la variable Txt[/COLOR]
Txt = Txt & C
Else
[COLOR="Green"] 'sinon on extrait les derniers caractères qui constitueront le chiffre Num à incrémenter[/COLOR]
Num = Mid(.Cells(L, 1), x, Len(.Cells(L, 1)))
[COLOR="Green"]'et de fait on quitte la boucle[/COLOR]
Exit For
End If
Next
[COLOR="Green"]'on désactive le filtre[/COLOR]
.AutoFilterMode = False
[COLOR="Green"]'sans commentaire[/COLOR]
End With
[COLOR="Green"]'on ajoute à la Textbox1 la variable Txt et la variable Num incrémentée de 1[/COLOR]
TextBox1 = Txt & Num + 1
End Sub