XL 2016 Formule SOMMEPROD ne donne pas le résultat correct

Aloha

XLDnaute Accro
Bonjour,

Cette formule:

Code:
=SOMMEPROD((INDIRECT(C1&"!"&"A6:A62")=$B3)*(INDIRECT(C1&"!"&"C6:C62")))
donne 0 bien que, si je fais calculer des résultats partiels avec F9,
alors que
INDIRECT(C1&"!"&"A6:A62")
énumère correctement tous les noms qui se trouvent en A, et
INDIRECT(C1&"!"&"C6:C62")
liste toutes les valeurs en C.

En B3 il y a un nom qui existe bien dans la colonne A de l'autre feuille..
Les formules INDIRECT sont forcément correctes, puisqu'elles livrent les résultats partiels.
Si je remplace * par ;, ainsi que si j'enlève une parenthèse ouvrante et une parenthèse fermante des deux côtés de l'astérisque, ça ne change rien.

Où peut résider la faute?

Bonne journée
Aloha
 

Lolote83

XLDnaute Barbatruc
Bonjour à tous,
Tout d'abord, meilleurs voeux.
Enfin pour répondre à la question, il y a une différence d'écriture entre ce qui est inscrit dans ce message et ce qu'il y a dans le fichier.
Exemple en Onglet RESULTATS C3
=SOMMEPROD(INDIRECT($C$1&"!"&"A6:A9")=$B3;INDIRECT($C$1&"!"&"C6:C9"))
à remplacer par
=SOMMEPROD((INDIRECT($C$1&"!"&"A6:A9")=$B3)*(INDIRECT($C$1&"!"&"C6:C9")))

voir le nombre de paranthèse
@+ Lolote83
 

Aloha

XLDnaute Accro
Bonjour,
Meilleurs voeux à toi aussi.
Ca ne changeait rien: ma formule était exactement celle-là.
Si je remplace * par ;, ainsi que si j'enlève une parenthèse ouvrante et une parenthèse fermante des deux côtés de l'astérisque, ça ne change rien.
Initialement la structure était bien
Code:
=SOMMEPROD((...)*(...))
J'ai rétabli maintenant la formule originale en remettant les parenthèses et en re-remplaçant le point-virgule par l'astérisque, et elle fonctionne à présent! Je n'y comprends rien.
Merci
Bonne journée
Aloha
 

Aloha

XLDnaute Accro
Bonsoir,
J'ai une autre formule SOMMEPROD(UCT) qui ne fonctionne pas et je viens d'en découvrir la raison.
Le contexte: Des données mensuelles d'un certain nombre de services sont collées par macro dans une base de données et après chaque service il y a un "/" dans la cellule de la colonne A et le reste de la ligne est vide.
Je viens de découvrir que, si j'efface les "/", la formule fonctionne.
D'où ma question: comme les "/" sont mis en amont de mon action et que je n'y ai pas d'influence, y a-t-il une autre possibilité que de les effacer?
S'il faut les effacer, comment puis-je les chercher et effacer par macro? Je préférerais une autre solution, avec une modification de ma formule.
Bonne soirée
Aloha
 

Aloha

XLDnaute Accro
Voici un fichier exemple qui illustre très bien le problème.
En préparant le fichier, j'ai d'ailleurs rencontré un tout autre problème.
J'ai donc expérimenté avec la formule, et j'ai entre autre effacé les "/", ce qui faisait fonctionner la formule. Comme je voulais présenter une feuille avec et une sans les "/", je voulais donc les remettre dans l'une des deux feuilles, mais chaque fois que je voulais introduire un "/" au clavier, dans la partie supérieure d'Excel apparaissaient de mystérieux chiffres et lettres de sorte que j'étais obligé de les copier dans le fichier original.
Je me souviens avoir rencontré ce problème déjà il y a longtemps dans une version bien plus ancienne d'Excel.
Bonne soirée
Aloha
 

Pièces jointes

  • IMG_1391.JPG
    IMG_1391.JPG
    257.7 KB · Affichages: 19
  • SUMPRODUCT.xlsx
    68.9 KB · Affichages: 18

Aloha

XLDnaute Accro
Re,
Merci beaucoup pour la formule matricielle!
Je l'ai intégrée dans mon fichier réel, mais là elle ne donne que des 0.
Dieu sait pourquoi!

D'ailleurs, il serait plus intelligent (mais cette tâche me dépasse) de récolter les données par macro,

* d'une parce qu'il n'y a pas de données pour chaque personne (représentées par les lettres en B): les données à collecter se trouvent dans les colonnes bleues Q, R, S, et lorsqu'on les analyse on constate que p.ex. dans les lignes 5, 7, 9, 10 il n'y a pas de données et avec la méthode de la macro on peut les ignorer, alors que, par formule, elles seront intégrées dans la liste tout comme les autres

* de deux, cette liste n'est qu'une étape intermédiaire: cette liste doit être enregistrée dans un nouveau fichier et j'ai réussi à fabriquer une macro qui exécute cette tâche, depuis la liste intermédiaire; la liste dans le fichier principal est donc en réalité un détour superflu et un gaspillage évitable de ressources Excel - si on sait comment s'y prendre!

A+
Aloha
 
Dernière édition:

Aloha

XLDnaute Accro
Re,
J'ai d'ailleurs réussi à fabriquer une macro qui efface les "/":

Code:
Sub effacer_traits_obliques()
Dim rngZelle As Range
Application.ScreenUpdating = False
Sheets("Database").Activate
For Each rngZelle In Range("A3:A57")
     If rngZelle.Value = "/" Then
          rngZelle.Value = ""
     End If
Next
Application.ScreenUpdating = True
End Sub

Mais je n'arrive pas à amener Excel VBA à chercher les données de toutes les personnes pour lequelles au moins une valeur (colonnes bleues) est >0 et cela pour un mois à déterminer par Inputbox et de les mettre dans un nouveau classeur.
Salve
Aloha
 

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 852
dernier inscrit
dthi16088