Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 SUM PowerPivot

  • Initiateur de la discussion Initiateur de la discussion Juan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Juan

XLDnaute Junior
Bonjour à tous,

Je demande votre aide car je ne trouve la solution sur le net.

Voici mon exemple:

J'ai une table avec des clients, des marques vendues sous 2 types : V et S, et des quantités vendues.

Résultats souhaités :
- en colonne G, je souhaite avoir la valeur 0 ou 1 en fonction de la condition suivante :
- si le client a vendu plus de 15 pcs (V+S) et le colonne C = oui, alors 1 sinon 0.

Mon problème intervient lorsque le client a vendu 10 pcs de V et 10 pcs de S. Dans ce cas, le TCD indique 1 que si je n'affiche pas la données V/S. Or, j'ai besoin qu'il m'affiche 1 peut importe que je sélectionne ou non la colonne V/S.

Voici des images pour illustrer et un fichier excel.



Merci de votre aide !
Jean
 

Pièces jointes

On ne doit pas parler de la même chose. Je faisais référence au total du client qui est de 2.25 au lieu de 3 selon tes déclarations, sauf que je vois qu'il est de 4 dans la colonne.
Car il y a bien 4 lignes (4-7-8-12 dans le TCD) pour lesquelles le nombre de produits vendus dépasse 15 unités, non ?
 
On parlait bien de la même chose. En effet, il y a bien 4 lignes mais le total du client doit être égale à 3 car la colonne S ou V ne compter que pour 1.

Ex : le client fait 10 pcs de V + 10 pcs de S = 20 pcs

ligne par ligne, il n'atteint pas les 16 pcs mais la somme est supérieur à 16, donc on doit le considérer comme 1. Ce qui fait que le total du client doit être de 3 et non de 4
 
Bonsoir Juan, djidji59430, danielco, Exi-Noob,

Voyez le fichier .xlsm joint et cette macro dans le code de la feuille DATA :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d As Object, col1%, col2%, tablo, resu(), i&, x$, n&
Set d = CreateObject("Scripting.Dictionary")
With [A3].PivotTable.TableRange1
    col1 = Application.Match("Brand*", .Rows(1), 0)
    col2 = Application.Match("Net Qty", .Rows(1), 0)
    tablo = .Value
    ReDim resu(1 To UBound(tablo), 1 To 1)
    resu(1, 1) = "V+S>=16"
    For i = 2 To UBound(tablo) - 2 '2 lignes de totaux
        x = tablo(i, col1)
        If Not d.exists(x) Then d(x) = i 'mémorise la ligne
        resu(d(x), 1) = resu(d(x), 1) + tablo(i, col2)
    Next i
    For i = 2 To UBound(tablo) - 2
        If resu(i, 1) >= 16 Then resu(i, 1) = 1: n = n + 1 Else resu(i, 1) = 0
    Next i
    resu(i, 1) = n: resu(i + 1, 1) = n
    '---restitution---
    Application.EnableEvents = False 'désactive les évènements
    With .Columns(.Columns.Count + 1)
        .Value = resu
        .Offset(1).Font.Bold = False
        .Offset(1).Font.ColorIndex = xlAutomatic
        .Cells(i).Resize(2).Font.Bold = True 'gras
        .Cells(i).Resize(2).Font.ColorIndex = 3 'rouge
        .Cells(i + 2).Resize(Rows.Count - .Row - i).Delete xlUp 'RAZ en dessous
    End With
    Application.EnableEvents = True 'réactive les évènements
End With
End Sub
Elle se déclenche automatiquement quand on actualise tout ou quand on valide/modifie des données.

Ou quand on filtre le TCD.

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
487
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
319
  • Question Question
Microsoft 365 Graphique à bulles
Réponses
6
Affichages
206
  • Question Question
Réponses
7
Affichages
225
Réponses
5
Affichages
237
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…