IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Sommeprod renvoi #valeur! ou #nom? [XL-365]


Sujet :

Excel

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut Sommeprod renvoi #valeur! ou #nom?
    Bonjour,

    Je fais une formule sommeprod pour calculer un temps de traitement moyen d'un sujet en fonctions de critères (sujets toujours en cours, dans une zone donnée,...). Cette formule (déclinées en plusieurs versions assez similaire) me renvoi #valeur! ou #nom?.

    Je précise :
    - Il y a des données texte, date et, nombre (dans des colonnes différentes, dans chaque colonne il n'y a qu'un seul type de données)
    - le données sont dans un tableau donc il n'y a pas de soucis de tailles de matrices différentes (format dans la formule de type Tableau1[zone1])

    La formule qui renvoi #valeur! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    =SOMMEPROD((Tableau1[Country]="TMHMI")*(Tableau1[Judgment 
    date]="")*(Tableau1[Department 
    in charge ]="Supplier QA")*(Tableau1[Current 
    duration]))+SOMMEPROD((Tableau1[Country]="TMHMI")*(Tableau1[Judgment 
    date]="")*(Tableau1[SQA]))
    La formule qui renvoi #nom? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =SI(Tableau1[Starting date]="";SOMMEPROD((Tableau1[Country]="TMHMI")*(Tableau1[Judgment 
    date]="")*(AUJOURDHUI()-Tableau1[Claim date]-Tableau1[CQA]-Tableau1[Design]-Tableau1[Assembly]-Tableau1[Welding]-Tableau1[SQA]-Tableau1[Special]));SOMMEPROD((Tableau1[Country]="TMHMI")*(Tableau1[Judgment 
    date]="")*(AUJOURDHUI()-Tableau1[Claim date]-Tableau1[CQA]-Tableau1[Design]-Tableau1[Assembly]-Tableau1[Welding]-Tableau1[SQA]-Tableau1[Special]-(AUJOURDHUI()-Tableau1[Starting date]))))

    Par ailleurs, qu'elle est la différence entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((Tableau1[zone1] = "Toto")*(Tableau1[zone2] = AUJOURDHUI()))
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((Tableau1[zone1] = "Toto");(Tableau1[zone2] = AUJOURDHUI()))
    En gros, quelle est la différence entre le * et le ; ?

    Merci d'avance pour votre éclairage et bonne journée

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 765
    Points : 28 623
    Points
    28 623
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour moi la formule =SOMMEPROD((Tableau1[zone1] = "Toto");(Tableau1[zone2] = AUJOURDHUI())) renverra 0 alors que =SOMMEPROD((Tableau1[zone1] = "Toto")*(Tableau1[zone2] = AUJOURDHUI())) renverra le nombre de cellules répondant aux conditions.

    En gros, quelle est la différence entre le * et le ; ?
    Le point virgule sert à séparer les arguments l'astérisque sert à multiplier.

    La fonction SOMMEPROD à pour but de renvoyer la somme du produit des tables définies dans ces arguments.

    Quelqu'un un jour a découvert un moyen détourné pour effectuer des sommes conditionnelles avec cette fonction.
    Pour le comprendre il faut savoir que VRAI vaut 1 et FAUX vaut 0 donc lorsque l'on place comme argument dans la fonction SOMMEPROD la condition (Tableau1[zone1] = "Toto") nous aurons un matrice de VRAI et de FAUX que l'on multipliera par la matrice (Tableau1[zone2] = AUJOURDHUI()) donc s'il y a 20 cellules contenant Toto et 3 cellules sur les mêmes lignes contenant la date du jour, la fonction SOMMEPROD renverra 3 mais si on multiplie par une autre colonne qui contient par exemple le chiffre d'affaires, nous aurons la somme de cette dernière colonne si sur la même ligne il y a "Toto" et la date du jour.

    Pour mieux comprendre ce principe, lire mon billet Comment remplacer la fonction SI par une opération logique ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    Merci pour votre retour ainsi que pour votre billet qui est grandement appréciable.

    Suite à la lecture de votre billet je me suis mis à vérifier si chacune des conditions pouvait être vrai ou fausse (sauf la dernière qui est un nombre et qui sert au calcul en tant que tel).
    Mais je n'ai pas trouvé la cause de mon soucis.
    J'en profite pour préciser que j'ai d'autres formules utilisant SOMMEPROD dans le même fichier, avec des données issues du même tableau, et qui fonctionne.
    J'ai aussi vérifier les données des colonnes que j'utilise dans mes formules et je n'y ai pas détecté d'anomalies.

    Avez-vous des pistes pour expliquer le résultat (#Nom? ou # Valeur!) svp?

    Merci d'avance et bonne journée

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 765
    Points : 28 623
    Points
    28 623
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avez-vous des pistes pour expliquer le résultat (#Nom? ou # Valeur!) svp?
    Le code d'erreur #NOM! signifie que la formule fait référence à un identificateur non reconnu par Excel et #VALEUR! qu'une opérande ou un argument de fonction est utilisé d'une façon inappropriée (par exemple on multiplie par une cellule contenant une valeur alphanumérique)

    [EDIT]
    Un dessin vaut mieux qu'un long discours. Dans l'exemple 2 nous pouvons voir qu'une lettre se trouve dans la colonne Valeur et le code erreur #VALEUR! n'est renvoyée que dans la formule dont la colonne est multipliée et pas séparée par un point virgule.
    Pour éviter cette erreur, il est donc préférable de séparer par un point virgule la colonne dont on fait la somme (toujours en dernière position)

    Nom : 201015 dvp SOMMEPROD Exemple 1.png
Affichages : 193
Taille : 22,4 Ko

    Nom : 201015 dvp SOMMEPROD Exemple 2.png
Affichages : 212
Taille : 23,1 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Pour être honnête, je n'ai pas trouvé ce qui ne faisait que la formule renvoyait #Valeur (peut-être que mes colonne avec des formules renvoyant "" mettaient le bazar...).
    Mais le fait de mettre le ";" a bien fonctionner.

    Merci beaucoup, je valide le sujet comme résolu.

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Renvoi valeur avec split
    Par rouls dans le forum C#
    Réponses: 3
    Dernier message: 26/11/2008, 19h01
  2. [Vue] Mettre des valeurs en nom de colonne
    Par Bisûnûrs dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/08/2008, 11h34
  3. Réponses: 4
    Dernier message: 03/10/2007, 17h57
  4. Problème renvoie valeur
    Par crapou dans le forum Langage
    Réponses: 1
    Dernier message: 25/09/2007, 09h48
  5. Renvoi valeur variable popup
    Par RedBit dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/04/2007, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo