Probleme de tenue du stock avec facture

Bonjour,

j'ai réalisé pour un ami une facture (pneus) qui j'en suis heureux, fonctionne très bien malgré mes faibles connaissances en VBA.

Mais en tentant toujours d'améliorer, je cale !

j'ai une feuille "Stock" dans laquelle s'inscrit par un Userform les achats de pneus avec tout ce qui s'y rapporte (prix, remises etc)

Sur ma facture, j'indique le n° de l'article se trouvant dans le stock et toutes les coordonnées (marque, dimension, prix...) s'indiquent automatiquement sur ma facture. Mais je voudrais que la quantité que j'indique sur la facture se reporte sur la feuille Stock (ici en colonne "O") afin de pouvoir tenir le stock à jour.

il faut bien entendu que cette quantité se place sur la ligne du n° d'article et c'et là que je cale . J'ai essayé avec Index et Equiv, j'ai essayé en VBA mais à chaque fois ça ne va pas !

je vous joins mon fichier, si vous pouvez m'aider ce serait réellement très gentil.

38eric1908.zip (405.65 Ko)

Bonjour

J'ai intégré le code au début de la procédure "Archiver"

  Dim ligne As Integer
  Dim cel

  ' mettre à jour le stock

  ligne = Sheets("Stock").Range("B" & Rows.Count).End(xlUp).Row
  For Each cel In Sheets("Facture").Range("A16:A37")
    x = Cells(Sheets("Stock").Range("A2:A" & ligne).Find(cel.Value2).Row, 2).Value
    Sheets("Stock").Cells(Sheets("Stock").Range("A2:A" & ligne).Find(cel.Value2).Row, 15).Value = _
      Sheets("Stock").Cells(Sheets("Stock").Range("A2:A" & ligne).Find(cel.Value2).Row, 15).Value + cel.Offset(0, 1).Value2
  Next cel
7eric1908.zip (404.23 Ko)

Impeccable ! les sorties de pneus s'inscrivent bien en colonne O mais j'ai une erreur de non déclaration du "x".

J'ai tenté de mettre Dim x as integer et alors cela me donne une erreur 91 non declaration de with. La je ne comprends plus.

Bien que n'étant pas très fort en VBA, j'ai pu suivre ton résonnement et le comprends bien.

Pourrais tu regarder à cela?

Merci beaucoup de ton implication

En fait il faut supprimer la ligne :

x = Cells(Sheets("Stock").Range("A2:A" & ligne).Find(cel.Value2).Row, 2).Value

Elle n'était là que pour des tests. Je l'ai oubliée quand j'ai fait le ménage. Désolé

Merci, mais maintenant que j'ai supprimé cette ligne, ce sont les deux lignes suivantes qui se mettent en jaune

Que dois je faire ?

je suis perdu

Merci de ton aide

L'erreur se produit quand la cellule dans facture est vide. Voici une correction

  For Each cel In Sheets("Facture").Range("A16:A37")
    If cel.Value <> "" Then ' teste si cellule vide
      Sheets("Stock").Cells(Sheets("Stock").Range("A2:A" & ligne).Find(cel.Value2).Row, 15).Value = _
        Sheets("Stock").Cells(Sheets("Stock").Range("A2:A" & ligne).Find(cel.Value2).Row, 15).Value + cel.Offset(0, 1).Value2
    End If
  Next cel

malheureusement, j'ai exactement la même chose : les deux lignes qui suivent "if cel.value ..." sont mises en jaune.

en regardant le code, je vois qu'il est inutile de prendre un range aussi grand que a16:a37 car les pneus ne seront jamais que sur les quatre premières lignes donc A16:A19 serait suffisant.

Mais je sais que cela ne change en rien le déroulement.

merci d'encore bien vouloir chercher pour moi.

Bizarre, chez moi ça fonctionne.

Je joins le fichier qui marche chez moi.

7eric1908.zip (406.83 Ko)

Bon !! j'ai du commettre une erreur, en effet j'ai lancé ta version et tout fonctionne. Je vais donc utiliser cela. C'est parfait.

Merci beaucoup pour l'aide apportée.

J'ai consacré cette journée pluvieuse à avancer un peu sur ce projet, car avec cette pluie, pas envie d'aller dehors. Je ne sais d'où tu te trouves, mais ici il fait froid.

Un grand merci pour le dépannage. Passe une excellente soirée.

Rechercher des sujets similaires à "probleme tenue stock facture"