Microsoft 365 Résolu par Djidji59430 - Budget Gestion

Djeen

XLDnaute Nouveau
Bonjour à tout le monde.

Je débute avec Excel et comme de juste je me fais les crocs avec une gestion de budget perso pour commencer.

J'ai un tableau avec les champs Date, Montant, Solde, Catégorie, Ordre, Libellé, Pointage.
J'ai mis en place sur la colonne Montant une MFC (mise en forme conditionnelle) qui change en fonction de Pointage (Oui/Non).
J'ai mis en place des segments pour les filtres des enregistrements des champs.

Dans ma feuille où se trouve le tableau, j'ai une cellule où j'ai stocké le montant Initialisation.
Je veux avoir le Solde Banque (qui est la dernière ligne du solde Pointé)
Je veux avoir le Solde Réel (qui est la dernière ligne du solde cumulé Pointé plus Non Pointé)
La colonne C contient le Solde (avec une MFC verte pour Pointé et Rouge pour Non Pointé)
Malheureusement pour avoir le montant Pointé correspondant à celui de la Banque, quand je met dans une cellule la formule "recherche(9^9;"C:C"), je tombe systématiquement sur le solde non pointé qui est la dernière ligne réelle de mon tableau, alors que je l'ai filtré avec Pointage OUI et que sur cette dernière ligne filtrée j'ai mon solde correspondant à la Banque. Cette formule "recherche(9^9;"C:C") ne tient pas compte du filtrage.

Dois-je passer par VBA ? Est-ce possible sans ? Quelqu'un peut me donner un exemple ?
Comment enlever le filtre et resélectionner le tout ?



J'ai essayé avec ça :
VB:
Sub macOui()

' macOui Macro
' Filtrage pour Pointage
'
 Dim pointe As Single
 Dim DerniereLigneUtilisee As Single
    ActiveSheet.ListObjects("tblSaisieOp").Range.AutoFilter Field:=10, Criteria1:="Oui"
    Range(Selection, Selection.End(xlDown)).Select
    DerniereLigneUtilisee = Range("C" & Rows.Count - 2).End(xlUp).Row
    MsgBox (DerniereLigneUtilisee)
    Range("C" & DerniereLigneUtilisee - 1).Select
    pointe = ActiveCell.Value
    Range("B3").Value = pointe
    MsgBox (pointe)
   
End Sub
Sub macNon()

' macNon Macro
' Filtrage pour Solde Pointé
'
     
    ActiveSheet.ListObjects("tblSaisieOp").Range.AutoFilter Field:=10, Criteria1:="Non"
    Range(Selection, Selection.End(xlDown)).Select
    Range("C383").Select
End Sub

Merci beucoup
 
Solution
Tu as modifié la formule que j'avais mise
=INDEX(tblSaisieOp[Solde];SOMMEPROD(MAX((tblSaisieOp[Pointage]="oui")*(LIGNE(tblSaisieOp[Solde])-14))))
Ce n'est pas un hasard si j'avais utilisé les noms des tableaux !
cette formule est dynamique et tient compte des changements (modifs ou ajouts)
Quelle formule as tu utilisée pour le nom pointe ? Une formule décaler() ?
Pointe est il une plage dynamique ??

djidji59430

XLDnaute Barbatruc
Tu as modifié la formule que j'avais mise
=INDEX(tblSaisieOp[Solde];SOMMEPROD(MAX((tblSaisieOp[Pointage]="oui")*(LIGNE(tblSaisieOp[Solde])-14))))
Ce n'est pas un hasard si j'avais utilisé les noms des tableaux !
cette formule est dynamique et tient compte des changements (modifs ou ajouts)
Quelle formule as tu utilisée pour le nom pointe ? Une formule décaler() ?
Pointe est il une plage dynamique ??
 

Djeen

XLDnaute Nouveau
Bon, vu les manip que j'avais faites et qui engendraient des erreurs, je confirme que ta formule fonctionne et que ça sera pour moi la solution finale.
Toujours merci pour cette façon de procéder.
Bravo djidji59430
 
Dernière édition:

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
308
Réponses
2
Affichages
669
Réponses
0
Affichages
469

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 069
Messages
2 085 040
Membres
102 763
dernier inscrit
NICO26