Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 [Résolu par Bebere] Incrémenter code article selon la catégorie

  • Initiateur de la discussion Initiateur de la discussion Lone-wolf
  • 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 !

Lone-wolf

XLDnaute Barbatruc
Bonjour à toutes et à tous 🙂

Dans le classeur Base qui se trouve dans le sous-dossier, j'aimerai faire une mise à jour des codes articles selon la catégorie. Exemple du code final:

Ber-20273-20255
Ber-20274-20256
Ber-20275-20257
Bij-0110-092
Bij-0111-093
Bij-0112-094
Chc-1124-1106
Chc-1125-1107
Chc-1126-1108

Dans la feuille Ventes Catégories, j'ai déjà préparé les nouveaux codes; dans la feuille Produits, ceux-ci (les anciens codes), je les ai écrit manuellement. J'aimerais automatiser tout cela, mais la plus grosse difficulté c'est: lors de la suppréssion d'un ou plusieurs anciens articles, comment incrémenter le code pour y ajouter les nouveaux? Par exemple, si je supprime Bij-0111-093 qui se trouve entre deux codes.

D'avance, merci pour votre aide
 

Pièces jointes

Bonjour Bebere

Concernant la macro de suppression, je l'ai modifiée. En effet, les feuilles des ventes ne doivent pas être incluses. Comme certains articles on été vendus, il n'est pas logique de les supprimés. Mais c'est de ma faute, j'aurais dû y penser avant.

VB:
Private Sub CmdSupTous_Click()
Dim sh As Worksheet, i&, k&, n&, rw&, sw&, j%
    Dim nom(), c()
    nom = Array("Produits", "Categories", "Stock", "Liste Categories")
    c = Array(4, 4, 4, 5)

    For k = LBound(nom) To UBound(nom)
        For Each sh In ActiveWorkbook.Worksheets
            With Worksheets(CStr(nom(k)))    'sh
                derlig = .Cells(Rows.Count, 4).End(xlUp).Row
                For i = derlig To 2 Step -1
                    Select Case c(k)
                    Case 4
                        If .Cells(i, 4).Value = TextBox4.Value Or .Cells(i, 1) = "" Then .Cells(i, 4).EntireRow.Delete
                    Case 5
                        If .Cells(k, 5).Value = TextBox4.Value Then .Cells(k, 5).EntireRow.Delete

                    End Select
                Next i
            End With
        Next sh
    Next k

    ListView1.ListItems.Clear

    For n = 2 To 7
        Controls("TextBox" & n) = ""
    Next n
End Sub
 
Dernière édition:
Re Bebere, 🙂

toujours un souci avec ta macro pour la feuille Stock et Catégories. Pour Catégories c'est la colonne 2 et non 4. Pour Stock, voir image. Je ne comprend pas pourquoi la dernière ligne vide s'élargi à 409.5 et il n'y a plus les n° de lignes. Là je l'ai remise à sa hauteur par défaut.



En PJ, encore une nouvelle version avec l'aquelle il n'y a plus ce problème. Pour le nouveau formulaire Stock, il faut que j'y ajoute la feuille Produits, pour qu'elle ce mette à jour.

A+ 😎
 
Re

Oui, je l'ai testé et ça me faisait la même chose. Maintenant avec ce code ci c'est ok.

VB:
Private Sub CmdSupTous_Click()
Dim lig&, ligne&, derlig&, i&, k&, j&, n&, x&, rw&


On Error Resume Next

With WsProd
derlig = .Cells(.Rows.Count, 4).End(xlUp).Row
For x = derlig To 2 Step -1
If .Cells(x, 4) = CmbCategories Then .Cells(x, 1).EntireRow.Delete
Next x
ligne = .Range("a65536").End(xlUp).Row
For k = 2 To ligne
If .Cells(k, 2) <> "" Then .Cells(k, 1) = k - 1
Next k
End With

With WsStock
derlig = .Cells(.Rows.Count, 4).End(xlUp).Row
For x = derlig To 2 Step -1
If .Cells(x, 4) = CmbCategories Then .Cells(x, 1).EntireRow.Delete
Next x
.Rows.RowHeight = 12.75
ligne = .Range("a65536").End(xlUp).Row
For k = 2 To ligne
If .Cells(k, 2) <> "" Then .Cells(k, 1) = k - 1
Next k
End With

With WsCat
derlig = .Cells(.Rows.Count, 2).End(xlUp).Row
For x = derlig To 2 Step -1
If .Cells(x, 2) = CmbCategories Then .Cells(x, 1).EntireRow.Delete
Next x
ligne = .Range("a65536").End(xlUp).Row
For k = 2 To ligne
If .Cells(k, 2) <> "" Then .Cells(k, 1) = k - 1
Next k
End With

With WsLC
derlig = .Cells(.Rows.Count, 4).End(xlUp).Row
For x = derlig To 2 Step -1
If .Cells(x, 3) = CmbCategories Then .Cells(x, 1).EntireRow.Delete
Next x
ligne = .Range("a65536").End(xlUp).Row
For k = 2 To ligne
If .Cells(k, 2) <> "" Then: .Cells(k, 1) = k - 1
Next k
End With

Application.Wait (Now + TimeValue("00:00:01"))

Call ChangeCode
WsProd.Range("a2:d65536").Copy WsStock.Range("a2")

ListView1.ListItems.Clear

For n = 2 To 7
Controls("TextBox" & n) = ""
Next n
End Sub
 
Dernière édition:
Bonjour Bebere et bon Dimanche 🙂

Une nouvelle version en PJ. Dans la feuille Stock, j'ai ajouter ceci

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("k2:k65536")) Is Nothing Then
If Target.Offset(0, 0) <= 0 Then
Target.Offset(0, 1) = "A commander"
Else
Target.Offset(0, 1) = ""
End If
End If
Application.EnableEvents = True
End Sub

Ainsi dans la listbox du formulaire stock (n'ayant pas trouver mieux), j'aurait la liste des articles à commander. J'ai aussi ajouter 2 feuilles pour la commande des produits.

A+ 😎
 

Pièces jointes

Bonjour Bebere 🙂

Désolé pour le retard. J'ai fait une boulette avec le formulaire Commandes et dû réécrire la macro d'enregistrement. Concernant les codes, ce n'est plus la feuille Ventes Categorie qu'il faut prendre en considération, mais la feuille Liste Catégories. Entretemps, j'ai aussi progressé avec le formulaire Stock.

Ce que j'aimerais aussi faire, lorsque on se trompe en écrivant dans la combo article ou un autre contrôle, c'est d'éviter d'avoir le message d'erreur Excel, mais annule l'écriture pour pouvoir poursuivre la prise de la commande et éviter ainsi de devoir tout recommencer.
 

Pièces jointes

Dernière édition:
bonjour Lone-wolf
pour usf stock,je pense qu'il faudrait mieux faire un choix par optionbutton ajouter,modifier, supprimer,tous
montrer/cacher les objets nécessaires pour chaque choix,peut être aussi séparer entrée et sortie
ou explique comment tu as fait
 
Bonsoir Bebere 🙂

Et bien, je ne comprends pas pourquoi mettre des optionbuttons, vu que le résultat final reste le même.
Expliquer quoi au juste? Si c'est les entrées et sorties, et bien dans la feuille Stock, il y a la colonne Vendus pour les sorties, A commander pour les entrées. Entre-temps, j'ai créé un nouveau formulaire pour éditer les nouvelles catégories et ajouter des nouveautés dans le formulaire Articles. En PJ
 

Pièces jointes

- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…