Soustraction

ulrij Messages postés 2 Statut Membre -  
via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour
Je souhaite faire ceci
cellule A1= stock de 100
cellule B1= Réassort de 50
Cellule C1 = total de A 1et B 1 soit 150 en stock

cellule D 1 = je soustrais 10 de la cellule C 1 = 140
cellule D 1= je soustrais 20 de la cellule C 1= 120

Mon problème... comment faire pour que la cellule D1 redevienne vierge à chaque fois, pour une nouvelle saisie qui viendra également incrémenter la sortie en C1

Merci par avance à ceux qui parviendront à comprendre mon souhait et à m'aider

1 réponse

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour ulrij

    Macro à mettre dans le worksheet de la feuille concernée (ALT + F11 pour ouvrir l'éditeur VBA puis double clic sur nom de la feuille dans l'arborescence puis copier et coller la macro dans la page blanche et refermer l'éditeur

    Private Sub Worksheet_Change(ByVal Target As Range)
    ' verifie que c'est la valeur en D1 qui a changé
    If Not Intersect(Target, Range("D1")) Is Nothing Then
    'et si c'est le cas :
    'effectue la soustraction et met le resultat en C1
    Range("C1") = Range("C1").Value - Range("D1").Value
    ' Affiche 0 en D1
    Range("D1") = 0
    End If
    End Sub


    Cdlmnt
    0
    1. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      bonsoir, via55,

      ne faudrait-il pas suspendre la gestion des évènements dans le if?

      cordialement
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention  
         
        Bonsoir JvDo

        Que veux tu dire ?
        0
    2. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      je parle de :

      If Not Intersect(Target, Range("D1")) Is Nothing Then
      Application.EnableEvents=False
      Range("C1") = Range("C1").Value - Range("D1").Value
      Range("D1") = 0
      Application.EnableEvents=True
      End If

      pour éviter que la procédure ne s'appelle elle-même

      cordialement
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention  
         
        Oui OK tu as raison

        Cdlmnt
        0