Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Suivi Budget perpétuel par Macro

cathodique

XLDnaute Barbatruc
Bonjour,

L'objectif est de suivre un budget "perpétuel".
Je voudrais bloquer l'ajout de lignes dans le tableau dès que le solde atteint zéro (0€) avec un message d'informatif.
Je voudrais aussi réutiliser cette même feuille pour un nouveau budget.
L'idée est de vider le tableau dès lors qu'on saisit un nouveau budget.
En vous remerciant,
 

Pièces jointes

  • Budget.xlsm
    10.3 KB · Affichages: 20
Solution
Pour effacer le tableau il suffisait d'effacer B1 mais bon :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [Tablo]
    If [E1] < 0 And Application.Sum(.Columns(2)) <> 0 Then .Rows(.Rows.Count).Delete xlUp
    If Not Intersect(Target, [B1]) Is Nothing And Not .ListObject.DataBodyRange Is Nothing Then .Delete xlUp
End With
End Sub

job75

XLDnaute Barbatruc
Bonjour cathodique,

A placer dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [Tablo]
    If [E1] < 0 And Application.Sum(.Columns(2)) <> 0 Then .Rows(.Rows.Count).Delete xlUp
End With
End Sub
A+
 

cathodique

XLDnaute Barbatruc
Bonjour Job75,

Je te remercie pour ton code. Mais il ne répond pas exactement à mes attentes.
Ton code ne vide pas complètement le tableau, la 1ére est toujours présente (image ci-dessous).


J'ai surement mal expliqué mon problème:
1- un budget est inscrit en B1
2- lorsque je saisis des lignes, par formule en E1 calcul du solde restant.
3- lorsque le solde est égal à 0 (zéro), un message m'avertit que le budget est épuisé et empêche l'ajout de tout autre montant.
4- Lorsque le solde est à 0, permettre la saisie d'un nouveau budget, en le modifiant en B1 le tableau doit se vider complètement.

En espérant que j'ai été plus explicite. Merci.
 

job75

XLDnaute Barbatruc
Pour effacer le tableau il suffisait d'effacer B1 mais bon :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [Tablo]
    If [E1] < 0 And Application.Sum(.Columns(2)) <> 0 Then .Rows(.Rows.Count).Delete xlUp
    If Not Intersect(Target, [B1]) Is Nothing And Not .ListObject.DataBodyRange Is Nothing Then .Delete xlUp
End With
End Sub
 

cathodique

XLDnaute Barbatruc
Bonsoir Job75,

J’avoue que je n'y avais pas pensé (effacer B1). J'ai sélectionné B1 et saisi une nouvelle valeur.
Je te remercie beaucoup. Je pense m'en sortir seul pour la suite.
Bonne soirée.
 

Discussions similaires

Réponses
1
Affichages
700
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…