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

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

  • Les Milles Merveilles.zip
    1 MB · Affichages: 66

Bebere

XLDnaute Barbatruc
Lone_wolf
comme le code du bouton supprimer est changé
changé le code de la combobox usage de dictionary(initialize)
regarde le code de la combobox cle est maintenant initialisée ("A" & cel.row)
voilà le dernier fichier corrigé
 

Pièces jointes

  • Les Milles Merveilles .xlsm
    191 KB · Affichages: 43

Lone-wolf

XLDnaute Barbatruc
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:

Lone-wolf

XLDnaute Barbatruc
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.

supp1.gif


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+ :cool:
 

Lone-wolf

XLDnaute Barbatruc
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:

Lone-wolf

XLDnaute Barbatruc
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+ :cool:
 

Pièces jointes

  • Les Milles Merveilles-V5.zip
    3.9 MB · Affichages: 39

Bebere

XLDnaute Barbatruc
bonjour Lone-wolf
le fichier joint est le même que la dernière intervention de ma part
effectivement il y avait une erreur(mis un commentaire dans le code),mis commentaires dans un label de userform
 

Pièces jointes

  • Les Milles Merveilles .xlsm
    185.8 KB · Affichages: 26

Lone-wolf

XLDnaute Barbatruc
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

  • Les Milles Merveilles.zip
    1.7 MB · Affichages: 40
Dernière édition:

Bebere

XLDnaute Barbatruc
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
 

Lone-wolf

XLDnaute Barbatruc
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

  • Les Milles Merveilles.zip
    1.8 MB · Affichages: 59

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU