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

  • Initiateur de la discussion Compte Supprimé 979
  • Date de début
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 :p

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

Vois fichier joint pour une meilleur compréhension :D

D'avance meri.

A+
 

Pièces jointes

  • Sous.Total selon condition.xls
    17.5 KB · Affichages: 443
Dernière modification par un modérateur:

Bens7

XLDnaute Impliqué
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

  • Planing essai.xlsx
    11 KB · Affichages: 72
  • Planing essai.xlsx
    11 KB · Affichages: 87
  • Planing essai.xlsx
    11 KB · Affichages: 80
C

Compte Supprimé 979

Guest
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

  • Bens7_Planing essai.xlsm
    18.5 KB · Affichages: 81

Discussions similaires

Réponses
4
Affichages
454

Statistiques des forums

Discussions
314 187
Messages
2 106 967
Membres
109 731
dernier inscrit
Benjamin91450