Sortir un article du stock

simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai composé une facture pour un ami (pneus) et j'ai donc voulu automatiser un maximum.
tout fonctionne correctement puisque j'ai une liste des clients ainsi qu'une feuille réservée à l'entrée en stock des pneus. Lorsque j'appelle l'entrée n° xx j'ai automatiquement les coordonnées, prix, dimension sur ma facture. Ma feuille stock comprends encore d'autres colonnes avec e.a. Prix d'achat, remise etc.
Je voudrais que en indiquant la quantité de pneus que je prends dans le stock, cette même quantité soit inscrite dans la colonne (ici "O") afin de pouvoir sortir cela du stock.
Cerise sur le gâteau, si je pouvais également effacer ma ligne de stock lorsque celui ci est à zéro ... ce serait formidable.
Je vous remercie de votre aide et je joins copie de mon fichier.

https://www.cjoint.com/c/KHsoKzs8n3I

Configuration: Windows / Chrome 92.0.4515.159

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    quel est le soucis pour réaliser cela?
    0
    1. simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   35
       
      Bonjour, mon soucis est que ne sais pas comment faire pour écrire la même quantité que sur la facture dans la colonne O de ma feuille "Stock" , sur bien entendu la même ligne que la ligne du produit en question.
      sur le fichier que je vous ai envoyé, j'ai 15 lignes, elles continueront au fur et à mesure que j'entrerai du stock, mais si par exemple je facture le n° 14 avec 2 pneus, je ne sais pas alleer inscrire (en dehors de ma facture ) 2 sur la même ligne que le n° 14 et ans a colonne O
      Merci de votre aide
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention  
       
      où est écrit ce n°14? quelque part dans la facture? elle semble vide.
      cela devrait s'intégrer dans quel code?
      0
    3. simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   35 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Non, le n° 14 est un exemple bien entendu et il se trouve en colonne A de la feuille Stock
      je pense que ça devrait faire partie d'un nouveau module ou alors "archiver_factures" ? car je veux prendre la quantité se trouvant en B16-17-18-ou 19 de la facture que j'inscrit après avoir noté en A le numéro de l'article selon la feuille Stock et je veux aller mettre cette quantité en O sur la feuille Stock, mais sur la ligne spécifiée de mon article.
      Ici dans l'exemple que je vous ai donné, je prends deux pneus n° 14 et sur la facture il va s'inscrire : Michelin ... 255/45/17 au prix de 175 .... Ensuite je met "2" dans la colonne quantité et j'aimerais que s'inscrive également 2 sur la ligne de l'article 14 de ma feuille Stock en colonne O
      cela me permettrait de gérer le stock puisque sur cette feuille stock, j'ai une colonne entrées et lorsque j'aurais la quantité sortie, je pourrais avoir le stock de ce pneu ce jour.
      Comme je le disais auparavant, le summum serait que lorsque mon stock du jour est à zéro, la ligne s'efface. Mais ce n'est pas nécessaire.
      Un grand merci pour votre aide, j'espère que nous allons y arriver.
      Bonne soirée.
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention  
       
      donc ce serait utile de créer une sub qui reçoit en paramètre le N° d'article et la quantité d'article, et qui ajoute la quantité en colonne O de stock?
      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      un exemple:
      Sub updstock(article As Integer, quantite As Integer)
      Dim cl As Range
      Set cl = Sheets("Stock").[a2]
      Do While cl <> article And cl <> ""
          Set cl = cl.Offset(1)
      Loop
      If cl = article Then
          cl.Offset(, 14) = cl.Offset(, 14) + quantite
      Else
          MsgBox ("article manquant")
      End If
      End Sub

      ou bien ceci, qui supprime la ligne de stock quand on a tout consommé:
      Sub updstock(article As Integer, quantite As Integer)
      Dim cl As Range
      Set cl = Sheets("Stock").[a2]
      Do While cl <> article And cl <> ""
          Set cl = cl.Offset(1)
      Loop
      If cl = article Then
          cl.Offset(, 14) = cl.Offset(, 14) + quantite
          If cl.Offset(, 5) = cl.Offset(, 14) Then
              cl.EntireRow.Delete
          End If
      Else
          MsgBox ("article manquant")
      End If
      End Sub
      0
  2. simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   35
     
    Non, ça ne fonctionne pas ! pas de ta faute bien entendu, mais c'est moi qui ne comprends pas !!
    j'ai ajouté Call updstock(14, 2) avant le End sub de mon code : rien ne se passe
    j'ai oté mon end sub : ça na va pas
    j'ai mis Call updstock(14, 2) avant sub updstock... : erreur
    Je suis perdu mais je reviendrai demain la dessus
    merci encore de ton aide.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ce n'est pas le call qu'il faut placer en fin de module, c'est la déclaration de la sub, telle que proposée en #6.

      n'hésite pas à montrer ce que tu as essayé: je peux difficilement le deviner.

      un exemple complet à tester dans un nouveau module:
      option explicit
      private Sub updstock(article As Integer, quantite As Integer)
      Dim cl As Range
      Set cl = Sheets("Stock").[a2]
      Do While cl <> article And cl <> ""
          Set cl = cl.Offset(1)
      Loop
      If cl = article Then
          cl.Offset(, 14) = cl.Offset(, 14) + quantite
          If cl.Offset(, 5) = cl.Offset(, 14) Then
              cl.EntireRow.Delete
          End If
      Else
          MsgBox ("article manquant")
      End If
      End Sub
      Private Sub tst()
      Call updstock(7, 2)
      End Sub
      0
    2. SimKmil > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour,
      décidément je pense être nul !
      je viens d'essayer : j'ai placé ton code dans un nouveau module (ici module 2) et je veux le faire démarrer ... rien , il ne m'a donné aucun nom de macro.
      Dois je placer ce module à l'intérieur de mon premier module ?
      dois je créer un sub updstock() ?
      Sinon, maintenant je comprends tout ton code : une boucle pour vérifier où se trouve l'article, si on ne trouve pas affichage de "article manquant" , sinon appeler updstock
      mais je ne vois toujours pas où je peux intégrer ce code ?
      A toute fins utiles je te joins à nouveau mon fichier, où tu peux vérifier mon code.
      Merci encore
      https://www.cjoint.com/c/KHtiTaJ14cI
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > SimKmil
       
      si tu veux démarrer via une macro, supprime le private devant
      sub tst
      .
      sinon, tu positionnes le curseur dans la
      sub tst
      , et tu fais f5.
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > SimKmil
       
      j'ai regardé ton dernier fichier.
      l'instruction
      Call updstock(14, 2)
      doit se trouver à l'intérieur d'une sub, par exemple à la place de l'instruction
      Sheets("Stock").Range("O" & ligne).Value = Sheets("Facture").Range("B16").Value
      .
      0
    5. simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   35 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      merci, j'essaie cela de suite
      0
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    alors
    Call updstock(Sheets("Facture").Range("A16"),Sheets("Facture").Range("B16"))
    0