XL 2019 Somme en fonction de plusieurs critères

team18fr

XLDnaute Occasionnel
Bonjour à tous,

Je cherche comment faire pour faire la somme suivant 2 critères. le premier une lettre et le deuxième une couleur et le tous sur plusieurs feuilles.
Sur le fichier joint dans l'onglet résultat je cherche à avoir la somme de toute les cellules A en vert, B et C.
J'arrive à faire la somme des cellules avec les lettres mais seulement sur une seule feuille et lorsque que je rajoute le critère couleur, ça ne marche pas.
Merci d'avance pour votre aide.
 

Pièces jointes

  • teste.xlsm
    17.5 KB · Affichages: 14

job75

XLDnaute Barbatruc
Bonjour team18fr, le forum,
VB:
Function MaSomme#(txt$)
Application.Volatile
Dim nf$, coul&, w As Worksheet, c As Range
nf = Application.Caller.Parent.Name
coul = Application.Caller.Interior.Color
For Each w In Worksheets
    If w.Name <> nf Then
        For Each c In w.UsedRange
            If c.Row > 1 Then If c(0) = txt And IsNumeric(c) Then _
                If c.Interior.Color = coul Then MaSomme = MaSomme + CDbl(c)
        Next c
    End If
Next w
End Function
A+
 

Pièces jointes

  • teste(1).xlsm
    20.2 KB · Affichages: 9

team18fr

XLDnaute Occasionnel
Bonjour et merci pour ton aide.
Ta macro fonctionne très bien mais je ne vais pas rechercher que des A ou des B mais aussi des 17N, 18N ou 17J et la ça marche plus.

Encore merci je viens de comprendre c'est vraiment top.
@+
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour team18fr,
Bon mon fichier est trop gros et le calcule automatique le fait ramer.
Pour arranger un peu les choses voyez ce fichier (2) :

- la fonction MaSomme a été rendue non volatile en supprimant Application.Volatile

- le bouton Calcul a été créé avec sa macro :
VB:
Private Sub CommandButton1_Click() 'bouton Calcul
With Application
    .ScreenUpdating = False: .Calculation = xlCalculationManual: .EnableEvents = False
    With [A2:C2] 'à adapter
        .Formula = "=Masomme(A1)"
        .Value = .Value 'supprime les formules
    End With
    .Calculation = xlCalculationAutomatic: .EnableEvents = True
End With
End Sub
A+
 

Pièces jointes

  • teste(2).xlsm
    24.9 KB · Affichages: 12

team18fr

XLDnaute Occasionnel
Bonjour,
Je reviens vers vous car j'ai fais un deuxième fichier à l'identique de mon premier en collant les même formule et il ne veut pas fonctionner. Lorsque je clique sur mon bouton il m'indique "Erreur d'exécution 13: incompatibilité de type" et quand je fais Débogage il me renvoi sur le module sur cette ligne en jaune
VB:
If c(0) = txt And IsNumeric(c) Then _
et sur le "c" j'ai "c=erreur 2007" et je ne sais pas à quoi cela correspond.
 

job75

XLDnaute Barbatruc
Bonjour team18fr, le forum,

Le bug est dû au fait que la cellule c(0) contient une valeur d'erreur (2007 => #DIV/0!)..

Pour l'éviter remplacez :
VB:
If c.Row > 1 Then If c(0) = txt And IsNumeric(c) Then _
par :
VB:
If c.Row > 1 Then If CStr(c(0)) = txt And IsNumeric(c) Then _
A+
 

team18fr

XLDnaute Occasionnel
Encore merci pour ton aide et la au lieu de compter le chiffre qui est sous la couleur verte dans le fichier plus haut, je voudrais pouvoir compter tout les "ess" qui sont dans la couleur jaune par exemple, mais toujours en fonction de la cellule du dessus.

@+
 

Pièces jointes

  • teste(2).xlsm
    23.9 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 340
Membres
103 192
dernier inscrit
Corpdacier