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
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 ??
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 ??
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