Sous.total selon critère sur liste filtrée

  • Initiateur de la discussion Initiateur de la discussion Compte Supprimé 979
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Compte Supprimé 979

Guest
Bonjour à tous,

Quelqu'un connait-il une formule miracle pour faire le sous total (ou total) de lignes filtrées selon une condition

Je peux faire un truc en VBA 😛

Mais je me demandais si par formule ce n'étais pas possible 😕

Vois fichier joint pour une meilleur compréhension 😀

D'avance meri.

A+
 

Pièces jointes

Dernière modification par un modérateur:
Re : Sous.total selon critère sur liste filtrée

Bonjour ! j;ai ouvert un nouveaux sujet a ce propos pour 2 conditions
mais rien personne peut etr pourriez vous m'aider svp voici ci joint exactement ce que jai besoin !
merci encore
 

Pièces jointes

Re : Sous.total selon critère sur liste filtrée

Salut Bens7,

Peut-être avec une fonction personnalisée, tel que celle-ci
A mettre dans un module
VB:
Option Explicit


Function Calcul(Rng As Range, Quoi As String)

  Dim Col As Integer, ColDeb As Integer, NbCol As Integer
  Dim Lig As Long, LigDeb As Long, NbLig As Long
  Dim Tot As Integer, Mem As String
  Application.Volatile
  ' Initialisation des variables
  ColDeb = Rng.Column: NbCol = Rng.Columns.Count
  LigDeb = Rng.Row: NbLig = Rng.Rows.Count
  Tot = 0: Mem = ""
  ' Pour chaque colonne de la plage de cellules
  For Col = ColDeb To ColDeb + NbCol - 1
    ' Pour chaque ligne de la plage de cellules
    For Lig = LigDeb To LigDeb + NbLig - 1
      ' Si la cellule contient le terme cherché
      If Cells(Lig, Col).Value = Quoi Then
        ' On ajoute au total
        Tot = Tot + 1
        ' On mémorise la dernière valeur trouvée
        Mem = Cells(Lig, Col).Value
      ElseIf Cells(Lig, Col).Value <> "" Then
        ' Si la cellule n'est pas vide mais ne correspond pas
        ' On mémorise la dernière valeur trouvée
        Mem = Cells(Lig, Col).Value
      ElseIf Tot >= 1 And IsEmpty(Cells(Lig, Col)) And Mem = Quoi Then
        ' Si le total est >= 1
        ' et que la cellule est vide
        ' mais que la dernière valeur mémorisée correspond
        ' On ajoute au total
        Tot = Tot + 1
      End If
    Next Lig
  Next Col
  ' Renvoyer le total
  Calcul = Tot
End Function
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
503
Retour