Le code se décompose en 2 fonctions.
Une troisième est également appliqué à mon bouton de validation, mais elle n'a en aucun cas à voir avec cet exemple d'opération.
Il fait un peu barbare, mais la validation de ce code est sensé apporté pas mal de modifications
Sub Valid_mvmt()
'saisie de données
Dim ddate As Date
Dim pprod As String
Dim op As String
Dim vvaleur As Integer
'emplacement des données
pprod = Range("c5").Value
op = Range("c6").Value
vvaleur = Range("c7").Value
ddate = Format(Range("c8").Value, "dd/mm/yyyy")
vdiff = Range("c11").Value
'renseignement des données obligatoires
If op "" Or vvaleur 0 Or ddate = 0 Or pprod = "" Then
MsgBox ("Toutes les zones doivent être renseignées")
Exit Sub
End If
Select Case op
Case "Commande"
rep2 = MsgBox("Vous allez mettre à jour les commandes, Voulez vous continuer ?", vbYesNo)
If rep2 = vbYes Then
Range("c6:c7").ClearContents
Worksheets("Commande").Range("a1").Activate
Cells.Find(What:=pprod, After:=ActiveCell, LookIn:=xlValues, _
lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Cells(ActiveCell.Row, 2).Value = ddate
Cells(ActiveCell.Row, 3).Value = vvaleur
Cells(ActiveCell.Row, 4).Value = "Non"
Call maj(ddate, pprod, op, vvaleur, "")
End If
Case "Inventaire"
If message1 = 0 Then Exit Sub
Cells(ActiveCell.Row, 5).Value = vvaleur
Call maj(ddate, pprod, op, vvaleur, "")
Case "Entrée"
If message1 = 0 Then Exit Sub
Cells(ActiveCell.Row, 5).Value = Cells(ActiveCell.Row, 5).Value + vvaleur
Call maj(ddate, pprod, op, vvaleur, "")
Case "Sortie"
If message1 = 0 Then Exit Sub
Cells(ActiveCell.Row, 5).Value = Cells(ActiveCell.Row, 5).Value - vvaleur
Call maj(ddate, pprod, op, vvaleur, "")
End Select
Worksheets(2).Select
End Sub
Private Function message1()
message1 = 0
rep = MsgBox("Vous allez mettre à jour le stock, Voulez vous continuer ?", vbYesNo)
If rep = vbYes Then
Range("c6:c7").ClearContents
Worksheets("Page de garde ").Select
Cells.Find(What:=pprod, After:=ActiveCell, LookIn:=xlFormulas, _
lookat:=xlWhole, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
message1 = 1
End If
End Function
Sur mon classeur, ta boucle serait équivalente à:
i=0
do
i=i+1
loop while pprod=cells(i,A).value
num_ligne_produit=i
cells(num_ligne_produit,E).value=vvaleur
J'ai essayé de l'employer mais elle ne fonctionne pas, ou alors c'est que je ne l'emploit pas au bon endroit, puisqu'elle vient bloquer le modèle
Je te remercie tout de même de porter un intérêt à mon problème