How to decrease a variable every second
Your basic main problem is that you don't know when the button was pressed.  Your timing algorithm always works from the "last time the value was decremented" - and that could be hours ago.  When you press the button the difference between millis() and time_1 could be massive, and it has to count up one second at a time until time_1 passes millis().

What you really need to do is separate out the button from the action. That makes it easier to manage.  You need to find the times when the button transitions from HIGH to LOW (pressed) and from LOW to HIGH (released). You're almost doing that right now, but not quite.  Then when you find the moment of being pressed you can say "From this moment forth you shall count."

For example you might change the first part of your code to be:

if (Pushed != StatePushed) {
    StatePushed = Pushed; // Remember the current state for the next time round
    if (StatePushed == HIGH) { // Released
        Serial.println("Button1 OFF");
    } else { // Pressed
        Serial.println("Button1 ON");
        time_1 = millis(); // Remember what the time is right now
    }
}


That then is a single atomic operation and you can now at any time examine StatePressed to see if the button is pressed or not, and also at the moment of pressing time_1 is set to the current millis() value, so you now know when the button was pressed.

Now you can add your second part using StatePressed as the trigger:

if (StatePressed == LOW) { // Button pressed 
    if(millis() &gt;= time_1 + INTERVAL_MESSAGE1){
        bankValue = bankValue - (Button1Value * CostFactor);
        time_1 +=INTERVAL_MESSAGE1;
        print_time(time_1);
        Serial.print("€");
        Serial.println(bankValue);
    }
}


However your method of comparing the time is not good. It doesn't handle the millis rollover problem.  Instead you should be using something more like:

if (millis() - time_1 &gt;= INTERVAL_MESSAGE1) {
    time_1 = millis();
    ... etc ...
}