On se croise !
Pour le message 7 :
ta macro est spéciale, c'est une macro évènementielle, c'est-à-dire qui se déclenche suite à un évènement, en l'occurence quand ta feuille (Worksheet) subit une modification (Change). D'où son nom Private Sub Worksheet_Change
Il ne peut pas y en avoir deux ; mais on peut la modifier en ajoutant une condition pour avoir différentes réponses au même évènement.
Pour les sorties de stock en C1, même principe que pour l'entrée en A1, sauf qu'on soustrait ;
Je me suis permis de rajouter une alerte en cas de stock négatif ;
La macro devenant un peu plus complexe, j'ai un peu modifié l'ordre des instructions ; j'ai aussi rajouté une gestion des erreurs (on Error GoTo...)
Ce sont des fioritures qui ne sont pas indispensables, mais qui fiabilisent ta procédure. Je ne veux pas non plus t'assommer de détails, c'est toi qui vois ce que tu veux garder.
A suivre...
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERROR
Dim Message As String, Valeur As Long
Application.EnableEvents = False
With Target
If .Address(False, False) = "A1" Then
Valeur = .Value
Message = "Valider la saisie de " & Valeur & " en " & .Address(False, False)
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
Range("B1").Value = Range("B1").Value + Valeur
ElseIf .Address(False, False) = "C1" Then
Valeur = .Value
Message = "Valider la saisie de " & Valeur & " en " & .Address(False, False)
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
With Range("B1")
If .Value < Valeur Then
Message = "Attention : stock négatif"
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
End If
.Value = .Value - Valeur
End With
End If
FIN: .Value = Empty
End With
Application.EnableEvents = True
Exit Sub
ERROR: MsgBox Err.Description: Resume FIN
End Sub