VBA Excel Deduction du stock automatique

Bonjour le forum,

J'ai un classeur contenant deux feuilles.

Dans le premier, j'ai le "Stock",qui lui a une base de donnée contenant des références, des produits et leurs quantités.

Dans le deuxième, j'ai mon "JV" et dans celui ci j'ai toute mes ventes de la journée.

A l'aide d'un bouton que j'ai nommé " Validé", je voudrais que lorsque je clic sur celui ci, les étapes suivantes ce produisent.

  • Rechercher la référence de chaque ligne de mon "JV"(qui est unique par produit) et la trouver dans ma feuille "Stock".
  • Sélectionner la quantité dans "JV""colonne C" pour ensuite la soustraire à la même référence dans la "colonne E" de la feuille "Stock".

-Rechercher la référence de chaque ligne de mon "JV" et la trouver dans ma feuille "Stock".

Ensuite additionner la quantité de JV ("colonne C") à la "colonne F" de "Stock"

J'espere que vous trouviez une de quoi m'aider.

Merci.

104teste1.xlsx (34.37 Ko)

Bonjour et bienvenue sur le forum

Un essai. Te convient-il ?

310teste2.xlsm (24.70 Ko)

Bonjour,

Cela fonctionne super !

Cependant, je me suis permis de mettre mes mains dans le code et ajouter des lignes à rechercher dans le " Stock" cela fonctionne mais ca prend énormément de temps

j en ai mis que 100 ligne a recherché pour faire un essaie, sachant que mon stock sur lequel je bosse fais plus de 4000 ligne.

y aurai t il un moyen pour que ca aille plus vite ou c est excel qui ne peut pas ?

voici le code que j ai modifié.

Option Explicit

Dim C, Cell, Lgn

Sub Valider()

With Sheets("Stock")

For Each C In Sheets("JV").Range("A2:A100" & Range("A" & Rows.Count).End(xlUp).Row)

Set Cell = .Range("A2:A100" & Range("A" & Rows.Count).End(xlUp).Row).Find(C.Value, lookat:=xlWhole)

If Not Cell Is Nothing Then

Lgn = Cell.Row

.Cells(Lgn, "E").Value = .Cells(Lgn, "E").Value - C.Offset(0, 2).Value

.Cells(Lgn, "F").Value = .Cells(Lgn, "F").Value + C.Offset(0, 2).Value

Else

MsgBox " La référence " & C.Value & "(" & C.Offset(0, 1).Value & " n'existe pas en stock", 16

End

End If

Next C

End With

Sheets("JV").Range("A2:E" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents

MsgBox "Ventes enregistrées."

End Sub

Tu écris :

… je me suis permis de mettre mes mains dans le code et ajouter des lignes à rechercher

Tu n’aurais pa dû toucher au code. L’instruction :

For Each C In Sheets("JV").Range("A2:A100" & Range("A" & Rows.Count).End(xlUp).Row) 

est une erreur. Celle qui suit, du même genre, aussi.

Celle que tu as voulu remplacer permettait d’adapter la zone de recherche à la dernière ligne de ton tableau.

Il te faut revenir à la macro initiale et si elle met du temps à tourner, prends patience !

Bye !

Très bien j’essaierai.

Merci

Bye !

Bonjour ,

De nouveau moi

J'aimerai exactement le meme procédé sauf que avec une autre feuille.

Donc en bref, reprendre le code precedent et l'adapter à ma nouvelle feuille.

Donc, "A3:A150" recherche la reference suivante dans "Stock" et soustraire la quantité que j'ai validé du stock réel de la reference lié a celle ci. ( exemple C3 de la feuille "Journa" - "K9" de la feuille "Stock".

et additionner la quantité validé "C" de "journa" à la quantié vendu "L" de Stock ( exemple C3 +L9) pour la reference "MOH" du model.

Et j'aimerai que uniquement les colonnes "A" "C" "G" "I" et "K2" soient reinitialisé car les autres contiennent des formules.

Donc voila pour la première partie.

Seconde partie.

Je voudrais que lorsque je clic sur " validé " (le petit bouton vert) cela m'enregistrer la feuille dans un dossier que je nomme " Vente journalière " et que celle ci ce nomme automatiquement par la date de du jour que j'ai validé.

Merci beaucoup si vous trouvez une réponse.

Bonjour

Tu écris :

J'aimerai exactement le meme procédé sauf que avec une autre feuille

Et elle est où cette nouvelle feuille ?

Le voici, désolé j'avais pas vu que ça a pas fonctionné.

J'ai du supprimé des lignes dans " stock" car celui ci était trop lourd, la feuille "stock" va normalement a 4000 lignes merci de prendre en compte.

Merci beaucoup !!

48classeur2.xlsx (269.77 Ko)

Bonjour

Nouvelle version. A tester.

147classeur2-v2.xlsm (250.19 Ko)

Bonjour, tout d'abord je vous remercie énormément le code est parfait.

Petit probleme que je rencontre est que lorsque je valide, ca s'enregistre bien mais un peu n'importe ou dans mes dossiers

J'aimerais si possible que la copie soit envoyé dans un dossier que je nomme " Journal de vente " avec bien sur le même procédé que vous avez fait, il me convient parfaitement.

En cogitant un peu je me rend compte qu il me faudrait approfondir mon tableur.( J'ai presque terminé je vous rassure lol )

J'ai donc rajouté des feuilles de calcules ( que je vous joint ci dessous)

Donc voila , toujours sur la feuille "journa" je voudrais en plus du code précèdent ajouter autre choses. je reprend dans l'ordre :

- copier la feuille "journa" dans un dossier sur mon bureau celui ci je le nomme "journal de vente" .( Code déjà présent dans la macro précédente )

-Déduire les ventes du stock et additionner les ventes des ventes total dans la feuille 'Stock". (Code déjà présent dans la macro précédente )

A partir de "Journa " à "rapportjourna"

  • Copier les cellules (A3:A) de "journa" dans (A5:A) de la feuille "rapportJourna"
  • Copier les cellules (B3:B) de "journa" dans (B5:B) de la feuille "rapportJourna"
  • Copier les cellules (C3:C) de "journa" dans (C5:C) de la feuille "rapportJourna"
  • Copier les cellules (D3:D) de "journa" dans (I5:I) de la feuille "rapportJourna"
  • Copier les cellules (F3:F) de "journa" dans (F5:F) de la feuille "rapportJourna"
  • Copier les cellules (H3:H) de "journa" dans (D5:D) de la feuille "rapportJourna"
  • Copier les cellules (J3:J) de "journa" dans (E5:E) de la feuille "rapportJourna"
  • Copier les cellules ("K2") de "journa" dans (H5:H) de la feuille "rapportJourna"
  • Copier les cellules (N3:N) de "journa" dans (G5:G) de la feuille "rapportJourna"
  • Copier les cellules (O3:O) de "journa" dans (J5:J) de la feuille "rapportJourna"

Maintenant à partir de "journa" à "Mensuel de vente"

  • Copier la date de la cellule "D1"( de "journa') ( ou la mettre au choix comme vous l'avez fait précédemment si possible ) dans A5 de la feuille "Mensuel de vente"
  • Copier "D151" de " journa" dans B5 de "Mensuel de vente"
  • Copier "O151" de "journa" dans C5 de "mensuel de vente"
  • Copier "K2" de "journa" dans D5 de "mensuel de vente"
Copier "F1" de "journa" dans E5 de "mensuel de vente"

Et pour finir reinitialiser les cellules suivantes : A3:A ; C3:C ;I3:I ;G3:G ; "K2" de la feuille "journa"

j'espère cette fois ci avoir fait le tour.

Merci beaucoup !

98teste3.xlsx (239.26 Ko)

Bonjour

Tu écris :

je me rend compte qu il me faudrait approfondir mon tableur.( J'ai presque terminé

J'attendrai donc que tu sois bien sûr d'avoir terminé tes réflexions car je ne veux pas revenir indéfiniment sur ton projet.

Bye !

Bonjour , j en suis vraiment désolé, c était après que j ai eu cette idée

Il me manque juste à ajouter cette partie au code après j en aurai fini,

J espère que vous pourriez me répondre

Bien cordialement

Oui oui j'ai terminé ma réflexion.

Je suis désolé je m en suis rendu compte après en faite.

Vous auriez une réponse ?

Rechercher des sujets similaires à "vba deduction stock automatique"