Listes d'inventaires automatiques - faisabilité

Bonjour à tous,

Je reviens vers vous pour un projet sur lequel je travail depuis 3 jours. Je ne sais même pas si cela serait réalisable du fait qu'il y a quelques variables et conditions plus ou moins compliquées.

But du fichier: Automatiser les listes d'inventaires que l'équipe doit réaliser chaque semaine. Pour cela je dois tenir compte

  • - De la quantité d'articles à inventorier.
  • - Du nombre d'utilisateurs actifs pour les inventaires.
  • - Du nombre de semaines restantes avant la fin de l'année.

Dans le fichier ci-joint il y a l'onglet "LISTE_INV" sur laquelle nous avons les références, la famille de chaque réf et d'autres infos puis un récap (à droite) avec la quantité d'articles par familles, la quantité à compter selon les semaine restantes et le nombre de lignes de références à compter par personne (cela évolue par rapport aux utilisateurs activés pour l'inventaire dans le formulaire de lancement).

Lorsque j'active le formulaire pour choisir les utilisateurs qui réaliseront l'inventaire (bouton TEST), les données se mettent automatiquement à jour lorsque je coche des utilisateurs. Plus il y a d'utilisateurs cochés, moins il y aura de lignes à compter par semaines).

A ce stade, quand je clic sur OK j'ai déjà les onglet qui se créent automatiquement avec le nom des utilisateurs cochés et le format de base de la liste d'inventaire (onglet MODELE) est reproduit lui aussi automatiquement. Mais il manque le plus compliqué et surtout la partie que je ne sais pas si cela est réellement faisable: remplir les onglets créés avec les lignes de références à compter par les utilisateurs.

Une fois les onglets créés avec les utilisateurs il faudrait que, automatiquement, il y ait le nombre de lignes indiquées dans la colonne "LIGNES PAR FAM" qui se copient dans chacun de ces onglets sans dupliquer des références (c'est bien cette colonne qui nous intéresse).

capture

Dans ce cas : 4 articles de la catégorie de bien (famille) A doivent être copiés et collés dans chacun des onglets créés (onglet 1 les 4 premières réfs, onglet 2 les 4 suivantes, onglet 3, les 4 articles suivants et ainsi de suite). Puis 1 ligne de la famille B, 1x de la famille C, 0x de la famille D, 3x de la famille E etc). Si il n'y a pas suffisamment d'articles pour chaque utilisateurs (imaginons 9 articles famille A pour 3 onglets: il faudrait que ça fasse x4 A pour l'onglet 1, x4 A pour l'onglet 2 et donc x1 pour l'onglet 3).Puis passer automatiquement à la famille suivante.

Je suppose aussi que le code du bouton OK devra être modifié. J'ai donc pensé de faire ce code dans un module puis d'utiliser la fonction CALL pour que cela reste plus propre et de l'insérer à l'endroit voulu.

Comme je l'ai dit, je ne sais pas si cela est réellement faisable mais je peux supposer que oui. En tout cas, je l'espère vivement

Merci d'avance pour me guider avec vos propositions sur ce projet qui est important pour moi. Bien entendu, je ne demande pas l'intégralité du travail mais des propositions qui seraient surtout source d'apprentissage et d'amélioration de mes connaissances et surtout savoir si cela est réalisable.

Merci d'avance et bon week-end.

Patrick.

5testinv-ok.zip (278.36 Ko)

J'ai travaillé sur ce code qui est plus ou moins satisfaisant:

               

                ' Maintenant, pour chaque famille d'articles dans la feuille LISTE_INV :

    Dim lastRow As Long
    Dim wsListeInv As Worksheet
    Dim j As Long

Set wsListeInv = ThisWorkbook.Sheets("LISTE_INV")

lastRow = wsListeInv.Cells(wsListeInv.Rows.Count, "B").End(xlUp).Row

j = 10

Do While j <= lastRow
    Dim famille As String
    Dim quantite As Integer

    ' Récupérer le nom de la famille d'articles et la quantité correspondante
    famille = wsListeInv.Cells(j, "B").Value
    quantite = wsListeInv.Cells(j, "M").Value

    ' Copier le nombre de lignes spécifié par la valeur dans la colonne M
    If quantite > 0 Then
        wsListeInv.Range(wsListeInv.Cells(j, "B"), wsListeInv.Cells(j + quantite - 1, "D")).Copy
        ' Coller ces lignes sur chaque onglet créé à partir de la cellule C10
        ws.Range("C10").PasteSpecial Paste:=xlPasteAll
    End If

    ' Passer à la prochaine famille d'articles
    j = j + quantite
    Loop

Fonctionnel: Oui, ça fait bien ce que je veux mais... que sur le premier onglet créé. Après ça bloque.

De plus, il faudrait copier dans "RESUME" les lignes attribuées. J'imagine que cela est faisable.

Merci encore pour votre aide.

Rechercher des sujets similaires à "listes inventaires automatiques faisabilite"