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 :

Comment faire une somme en fonction d'une valeur qui est condition d'une autre valeur


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Comment faire une somme en fonction d'une valeur qui est condition d'une autre valeur
    Bonjour

    Comment est-ce que je peux faire pour faire une somme de montant en fonction d'une valeur dans une colonne si celle-ci est identique

    Je m'explique,
    J'ai une feuille 1 avec 3 colonnes DEMANDES CODES MONTANTS.
    Je voudrais dans la feuille 2 tout d'abord récuperer chaque code en fonction d'un paramètre de DEMANDE (B6 feuiile 2),dans la colonne CODE UNIQUE
    et
    pour chaque code faire la somme DES MONTANTS.
    Mais le problème c'est que les codes ne se suivent pas. EX on peut passer de 7 à 10.
    Donc je ne peut pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ={MAX(SI(Feuil1!$A$2:$A$63=Feuil2!$B$6;Feuil1!$B$2:$B$63))+1}

    Merci si quelqu'un a une solution car la table est énorme
    fichier pour explication joint
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Hello,

    Tu peux faire cela via un filtre : pour récupéré tout les codes mais je ne sais pas si tu as des doublons ou non apres tu n'aura qu'a faire un sommeprod() pour calculer ta somme.

    Mais sais tu déjà programmer en VBA?

    Tchuss

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut [EXCEL 2003] suite somme en fonction d'une valeur
    Bonjour
    Merci de me répondre
    Tout d'abord je ne connais absolument pas VBA
    J'aurai aimé trouver la solution par EXCEL

    Puis j'ai beaucoup de doublons ce qui vont me servir pour faire des sommes des montants

  4. #4
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Rebonjour,

    Ce que je te propose donc c'est sur ta feuille deux tu liste l'ensemble de tous tes codes sans les doublons :

    apres tu appliquera la formule suivante :

    =SOMMEPROD(('Feuil1'!$A$2:$A$10=$B$6)*('Feuil1'!$B$2:$B$10=A$7);'Feuil1'!$C$2:$C$10)
    Modifie la pour que cela corresponde a ton code et cela devrai etre bon tu n'aura qu'a modifier la valeur de ton B6 pour que cela recalcule tout! Apres je ne sais pas si cela ne vas pas faire trop ramer ta becanne... passe peut etre en calculation manuelle (dans le menu des options).

    Cdlt,

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Pour ta colonne D, comme l'a dit Drost, tu peux faire un Sommeprod() comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((Feuil1!A2:A63=Feuil2!$B$6)*(Feuil1!B2:B63=Feuil2!C7)*Feuil1!C2:C63)
    à tirer vers le bas pour l'avoir pour toutes les valeurs de code.

    Pour le problème du code unique par contre je ne sais plus trop mais il me semble que quelqu'un avait eu le même genre de problème... à voir dans les anciens messages !

    Edit : ah ben j'ai été devancé

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Drost

    Je suis un peu perdu

    En fonction du n° de demande dans la feuille 2 je dois mettre chaque code unique sans doublon.
    j'arrive à récuperer la valeur mini et maxi des codes uniques mais mon problème c'est pour rechercher les codes entre ses deux valeurs de manière automatique car la table que je récupère à 3000 enregistrements

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Je viens de penser à un petit truc qui pourrait t'aider :
    Pourquoi n'utiliserais-tu pas un tableau croisé dynamique ?
    Avec un somme pour les montants ça passe pas mal

    Voir en pièce jointe
    Fichiers attachés Fichiers attachés

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bonjour

    Le problème c'est que je dois absoluement récupérer ce n° de code car j'en ai besoin pour l'imprimer dans un document où j'ai beaucoup d'autres information.
    En fait de ma table je vais devoir faire une impression en fonction de la demande. Donc je ne peux pas faire de TCD.

    ex une partie de nom document doit vraiment être sous cette forme
    code unique total montant
    1 1338,27
    ? 0
    ? 0
    ? 0
    ? 0
    ? 0
    ? 0
    23 5423,86
    Donc j'aimerai trouvé la fonction pour touver les ?

    En tout cas merci pour la formule SOMMEPROD, c'est tout à fait ce dont j'ai besoin

  9. #9
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Re^^

    Copie l'ensemble des codes sur un nouveau fichier et ajoute une macro avec ca cela devrait enlever tout tes doublons :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub doublons()
     
    Range("A1").Select
        Range(Selection, Selection.End(xlDown)).Select
        fin = Selection.Rows.Count
     
    For i = 1 To fin Step 1
     
    If Cells(i, 1).Value <> "" Then
     
    For j = 1 To fin Step 1
     
    If Cells(j, 1).Value = Cells(i, 1).Value Then
    Rows(j).Select
        Selection.Delete Shift:=xlUp
    End If
     
    Next j
     
    End If
     
    Next i
     
    End Sub

  10. #10
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Re^^

    En fait, utilise plutot cette macro! Ajoute dasn ton fichier une feuille 3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro recorded 30.10.2007 by Administrator
    '
     
    '
        Sheets("Feuil2").Select
        demande = Range("b6").Value
        Sheets("Feuil1").Select
        Selection.AutoFilter Field:=1, Criteria1:=demande
     
        Range("B1").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
     
        Sheets("Feuil3").Select
     
        Range("A1").Select
        ActiveSheet.Paste
     
        Range("A1").Select
        Range(Selection, Selection.End(xlDown)).Select
        fin = Selection.Rows.Count
     
    For i = 2 To fin Step 1
     
    If Cells(i, 1).Value <> "" Then
     
    For j = 2 To fin Step 1
     
    If Cells(j, 1).Value = Cells(i, 1).Value Then
    Rows(j).Select
        Selection.Delete Shift:=xlUp
    End If
     
    Next j
     
    End If
     
    Next i
       Range("A2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
     
       Sheets("Feuil2").Select
        Range("C7").Select
        ActiveSheet.Paste
     
     
    End Sub
    Tchuss

  11. #11
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Petite question : tes impressions tu les fais à la main ensuite ou tu as un programme automatisé pour le faire (je pense que non puisque tu as dit ne pas faire de VBA mais sait-on jamais) ?

    Si tu fais ça à la main, tu peux faire un TCD (en inversant CODES et DEMANDES dans le fichier que j'avais joint pour avoir ça dans le bon sens) puis sélectionner juste la demande que tu souhaites en décochant les autres. Tu auras juste alors à copier coller le résultat dans ta feuille 2, puisque tu auras à la fois les codes et les montants correspondant à la demande.

    Toutefois, il est vrai que ce n'est plus tout automatique, je ne vois pas pour l'instant comment faire ça de manière plus élaborée.
    Bon courage

  12. #12
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour à tous

    En premier lieu, tu vas trier ta base sur les 2 premieres colonnes


    Tu vas definir 3 plages de cellules

    plage base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil1!$A$1;EQUIV(Feuil2!$B$6;Feuil1!$A:$A;0)-1;;NB.SI(Feuil1!$A:$A;Feuil2!$B$6))
    Plage basec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil1!$B$1;EQUIV(Feuil2!$B$6;Feuil1!$A:$A;0)-1;;NB.SI(Feuil1!$A:$A;Feuil2!$B$6))
    plage code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil1!$B$1;EQUIV(Feuil2!$B$6;Feuil1!$A:$A;0)+EQUIV(Feuil2!$C7;basec;0)-2;)
    Attention, pour creer cette plage, tu dois te positioner dans la case C8 de la feuille 2, dans la formule de plage, $C7 est une reference qui va evoluer en fonction de la ligne ou sera la formule finale

    ensuite sur la feuille 2
    en C7, tu gardes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MIN(SI(Feuil1!$A$2:$A$63=Feuil2!$B$6;Feuil1!$B$2:$B$63))
    en C8 tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(code;NB.SI(basec;C7);0)
    tu tires cette formule vers le bas

    et enfin en d7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((basec=$C7)*DECALER(basec;;1))
    tu tires la formule vers le bas

  13. #13
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    Je n'ai pas pu te renoyer ton fichier, étant au taquet des fichiers joints

    J'ai donc supprimé quelques pieces jointes precedemment

    ton fichier ci-dessous

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bonjour à tous

    Merci à tout le monde, ça y est! ça Marche!!!

    et Merci à Wilfried, C'est tout à fait ce que je voulais. J'ai testé sur ma base réelle tout est OK.
    Bonne journée à tous, vous m'avez beaucoup appris.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/08/2011, 21h19
  2. Réponses: 1
    Dernier message: 06/10/2009, 10h06
  3. comment faire un somme mais a une condition
    Par lila23 dans le forum Débuter
    Réponses: 7
    Dernier message: 23/04/2009, 15h34
  4. Comment faire la somme d'une expression?
    Par aquafafa dans le forum IHM
    Réponses: 0
    Dernier message: 25/02/2008, 13h31
  5. Réponses: 5
    Dernier message: 31/01/2008, 17h05

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