Problème avec fonction : Somme.Si.Ens

Salut à tous,

J'avais posé la question à la suite d'une autre question qui avait déjà été résolue ! Par contre je crois que pour une nouvelle question je dois créer un nouveau sujet... corriger-moi si je me trompe

En fait, dans mon onglet «Juin 2018», cellule K24 , Je tente qu'il additionne toutes les valeurs des cellules de la rangée E ayant la même date en A dans l'onglet «Suivi de production» et ayant comme couleur le blanc en E. En réalité je veux qu'il me fasse la somme de tous les nombres en E ayant la même date et ayant comme fond la couleur blanche.

En espérant être clair... car je suis un peu à bout de solution

Pour l'instant dans la cellule K24 de l'onglet «Juin 2018» ça fonctionne seulement lorsque je n'ai qu'une seul fois exemple la date 20 juin, si j'ajoute un autre 20 juin avec une quantité en E, il me met automatiquement zéro.

Merci d'avance pour votre temps

Bonsoir,

Ta formule ne respecte pas la syntaxe de la fonction !

Salut MFerrand

C’est le seul moyen que j'ai trouvé pour obtenir à quelque chose qui ressemblais au résultat que je voulais ... Existe-t-il une autre fonction que j'ignore qui ferrai le travail ?

Bonjour,

Tu ne peux que la fabriquer...

Dérivée de ta première fonction perso :

Function SOMME_SI_ETCOUL(PlageEt As Range, CondEt, PlageSomme As Range, PlageCouleur As Range)
    Dim Som As Double, Couleur As Long, i As Integer, k As Integer
    Application.Volatile
    Couleur = PlageCouleur.Cells(1, 1).Interior.Color
    With PlageSomme
        For i = 1 To .Rows.Count
            For k = 1 To .Columns.Count
                If PlageEt.Cells(i, k) = CondEt And .Cells(i, k).Interior.ColorIndex _
                 <> xlColorIndexNone And .Cells(i, k).Interior.Color = Couleur Then
                    If IsNumeric(.Cells(i, k)) Then Som = Som + .Cells(i, k)
                End If
            Next k
        Next i
    End With
    SOMME_SI_ETCOUL = Som
End Function
=SOMME_SI_ETCOUL(date;A24;qtélot;Q19)

Par la même occasion, ta première fonction revisitée :

Function SOMME_SI_COULEUR(PlageSomme As Range, PlageCouleur As Range)
    Dim Cel As Range, Som As Double, Couleur As Long
    Application.Volatile
    Couleur = PlageCouleur.Cells(1, 1).Interior.Color
    For Each Cel In PlageSomme
        If Cel.Interior.ColorIndex <> xlColorIndexNone And Cel.Interior.Color _
         = Couleur Then
            If IsNumeric(Cel) Then Som = Som + Cel
        End If
    Next Cel
    SOMME_SI_COULEUR = Som
End Function

Modifiée sur 3 points :

  • utilisation de Color en lieu et place de ColorIndex : plus au goût du jour depuis 2007 (le système de couleurs a changé dans Excel et la palette n'est plus prédominante...)
  • inutile de renvoyer une erreur #VALEUR! si PlageCouleur occupe plus d'une cellule, on renvoie la première et on évite une erreur (de plus cette erreur et renvoyée automatiquement par Excel si une autre erreur est rencontrée, elle ne serait donc pas significative du problème...)
  • vérification que la valeur additionnée est numérique, sinon là il y aurait une erreur...

Dans la mesure où tu utilises du blanc, test sur ColorIndex maintenu pour éliminer les cellules sans couleur (Color renvoie dans ce cas la couleur de fond de la feuille, soit blanc...)

Cordialement.

Un sincère merci ! Sa fonctionne super bien !

Salut MFerrand,

Je suscite encore ton aide

Comment faire pour que la cellule K24, se mettre automatiquement à jour lorsque je change la couleur d'une cellule en E de l'onglet « Suivi de production correspondant à la bonne date ? J'ai cocher calcul automatique dans option….

J'ai essayé la macro :

Private Sub Worksheet_Activate()

ActiveWorkbook.RefreshAll

End Sub

Merci d’avance

se mettre automatiquement à jour lorsque je change la couleur d'une cellule

Tu sais qu'un changement de mise en forme ne déclenche aucun recalcul, on le proclame régulièrement lorsqu'il est question de ce type de fonction...

Tu peux effectivement jouer sur l'activation de la feuille dans la mesure où le changement provient d'une autre feuille. Mais pourquoi RefreshAll alors qu'il s'agit de recalculer la feuille.

Essaie :

    Me.Calculate

Cordialement.

J'ai essayer cela et j'obtient une erreur ? Est-ce qu'il fallait que j'ajouter Me.Calculate à mon macro

Private Sub Worksheet_Activate()

ActiveWorkbook.Me.Calculate

End Sub

Enlève ActiveWorkbook qui n'a rien à faire là !

Me désigne la feuille.

Me.Calculate force le recalcul de la feuille.

Super merci beaucoup !

Rechercher des sujets similaires à "probleme fonction somme ens"