incrémentation en vba

  • Initiateur de la discussion Initiateur de la discussion billyboy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

billyboy

Guest
bonjour le forum,
afin d'incrémenter des n° d'article, je chercher à réaliser l'opération suivante:

j'ai des numéros d'article dont le suffixe change en fonction de leur classe

ex: MPCOL0001 > Matières Première Colle n°0001
dans un userform
1 exécuter un tri dans tous les N° d'articles existants (combobox1)
2 extraire le dernier N° crée (maxi)
3 attribuer un nouveau n° > maxi + 1 (a mettre dans un textbox)

merci de votre aide
 
Re : incrémentation en vba

Bonsoir,
Code:
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
A+
kjin
 

Pièces jointes

Dernière édition:
Re : incrémentation en vba

merci bcp kjin, ça marche à merveille,

vu mon niveau débutant et si jamais tu as un peu de temps, pourrais-tu m'expliquer ton code, car je t'avoue que je n'ai pas tout suivi.

encore une fois merci.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
17
Affichages
2 K
A
Réponses
30
Affichages
6 K
A
Réponses
1
Affichages
1 K
A
C
Réponses
10
Affichages
2 K
chimel38
C
K
Réponses
0
Affichages
3 K
K
V
  • Question Question
2
Réponses
18
Affichages
5 K
A
Réponses
7
Affichages
2 K
A
E
Réponses
2
Affichages
4 K
M
Réponses
1
Affichages
1 K
maryrossignon
M
M
Réponses
5
Affichages
2 K
J
Réponses
2
Affichages
12 K
Jojo1982
J
V
Réponses
14
Affichages
2 K
Retour