Condition SI dans la fonction SOMMEPROD

Gasp73

XLDnaute Nouveau
Bonjour à tous,

J'utilise une fonction SOMMEPROD et j'ai besoin d'effectuer un test sur une date, or la colonne qui contient la date à tester est un extrait d'un logiciel, avec certaines lignes en format date, et d'autres en string, et enfin des cellules contenant la valeur zéro (cellules pas encore remplies par l'extrait).

Ma fonction SOMMEPROD ne me renvoie donc pas le résultat escompté car elle ne peux effectuer le test sur les date en format string... Voilà la fonction utilisée initialement :

=SOMMEPROD(DB_Cargoes!$K$5:$K$500>$T$2)*(DB_Cargoes!$K$5:$K$500<$T$3);(DB_Cargoes!$HZ$5:$HZ$500))

J'ai ensuite voulu l'améliorer en convertissant tous les formats string au format date :

=SOMMEPROD((DATEVAL(TEXTE(DB_Cargoes!$K$5:$K$500;"jj/mm/aaaa"))>$T$2)*(DATEVAL(TEXTE(DB_Cargoes!$K$5:$K$500;"jj/mm/aaaa"))<$T$3);(DB_Cargoes!$HZ$5:$HZ$500))

Mais j'ai alors une erreur #VALEUR! car la fin de ma colonne "date" contient des 0, qui sont alors transformés en 00/01/1900 par la fonction TEXTE, et ensuite, la fonction DATEVAL n'arrive pas à les retranscrire en date (ce qui est normal).

J'aimerais donc insérer l'équivalent d'une condition SI dans ma fonction SOMMEPROD (qui travaille sur des matrices donc m'interdit l'utilisation de la fonction SI) pour ne traiter que les chaines de caractères différentes de 0.
Et à ce titre je souhaite développer un bout de code VBA pour créer la fonction nécessaire, mais je suis débutant et je peine beaucoup à travailler avec des matrices en VBA.

Si vous avez des idées de codes je suis preneur, voire même une solution sans utiliser de code VBA !!

D'avance merci,

Gasp
 

Jocelyn

XLDnaute Barbatruc
Re : Condition SI dans la fonction SOMMEPROD

Bonjour le Forum,
Bonjour Gasp73,

Sans fichier exemple joint pas facile d'imaginer une correction de la formule, mais peut être a tester :

Code:
=SOMMEPROD((DB_Cargoes!$K$5:$K$500*1>0)*(DB_Cargoes!$K$5:$K$500*1>$T$2)*(DB_Cargoe s!$K$5:$K$500*1<$T$3);(DB_Cargoes!$HZ$5:$HZ$500))

Si cela ne fonctionne pas mets un exemple sans données confidentielles.

Cordialement
 

Gasp73

XLDnaute Nouveau
Re : Condition SI dans la fonction SOMMEPROD

Bonjour Jocelyn et merci pour ta réponse !

Je joins un fichier Excel qui illustre plutôt bien le problème (sans les données confidentielles !) : je n'arrive pas à tester via la fonction SOMMEPROD si une date est bien compris dans un intervalle donné à cause du format.

J'ai essayé un bout de code VBA pour créer la fonction dont j'aurais besoin, à savoir transformer toutes les valeurs de ma matrice d'entrée dans le bon format (date), mais j'ai une erreur de valeur...

Code:
Public Function FORMAT_DATE(Matrix As Range)

Dim ObjectCell As Range

    For Each ObjectCell In Range(Matrix).Cells
        If ObjectCell.Value = 0 Or ObjectCell.Value = "" Then
            ObjectCell.Value = 0
        Else
            ObjectCell.Value = CDate(ObjectCell.Value)
        End If
    Next
    
    FORMAT_DATE = Matrix
    
End Function


J'aurais aimé que la formule de ma fonction devienne alors :

=SOMMEPROD((FORMAT_DATE(DB_Cargoes!$K$5:$K$500))>$T$2)*(FORMAT_DATE(DB_Cargoes!$K$5:$K$50 0)<$T$3);(DB_Cargoes!$HZ$5:$HZ$500))
 

Pièces jointes

  • Problème formule SOMMEPROD.xlsx
    12 KB · Affichages: 22

Jocelyn

XLDnaute Barbatruc
Re : Condition SI dans la fonction SOMMEPROD

re,

Hum hum je te remets ton fichier avec une formule qui semble correspondre et les explication, je n'ai rien fait au niveau VBA, je suis une bille a ce jeu la.

Regardes et dis nous
 

Pièces jointes

  • Problème formule SOMMEPROD.xls
    20.5 KB · Affichages: 34
  • Problème formule SOMMEPROD.xls
    20.5 KB · Affichages: 37
  • Problème formule SOMMEPROD.xls
    20.5 KB · Affichages: 37

Gasp73

XLDnaute Nouveau
Re : Condition SI dans la fonction SOMMEPROD

Super Jocelyn, ça marche !!

Je connaissais cette commande pour transformer un résultat booléen en numérique (1 ou 0), mais pas pour l'appliquer à une date. En tout cas merci beaucoup ça fonctionne !

Bonne fin de journée !
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390