Synthese avec une somme.si avec 2 criteres

bonjour,

je bloque sur un basique.

J'ai 2 feuilles :

1 - une database avec en colonne A = marque colonne B = modele colonne J = cout

2 - synthese par marque avec un detail au modele

voici ma structure VBA qui ne fonctionne pas

Merci pour votre aide

Sub sportetfamille()

For i = 2 To Sheets("TEST4").Range("A10000").End(xlUp).Row

If Sheets("SXX").Columns("A").Find(Sheets("TEST4").Range("A" & J), LookIn:=xlValues, lookat:=xlWhole) Is Nothing Then

    Sheets("TEST4").Range("B" & i) = Application.WorksheetFunction.SumIf(Sheets("SXX").Columns("B"), Sheets("TEST4").Cells(i, 1), Sheets("SXX").Columns("J"))

 Else

    Sheets("TEST4").Range("B" & i) = Application.WorksheetFunction.SumIf(Sheets("SXX").Columns("A"), Sheets("TEST4").Cells(i, 1), Sheets("SXX").Columns("J"))

  End If
 Next i

End Sub
15classeur2.zip (11.49 Ko)

Bonjour,

Voir fichier avec TCD.

A te relire.

Cdlt

22tcd-v1.xlsm (22.31 Ko)

merci jean Eric

je ne voulais pas décrire tout le projet de mon fichier excel que j'essaye de construire (en m'intruisant en VBA) mais j'aurais besoin du bout de code VBA me permetant de faire cela

le TCD je connais tres bien hihi

Re,

Alors tu crées le TCD avec VBA

Cdlt

Tu ne m'aides pas...

quelqu'un d'autre peux m'aider ?

merci

Re,

Je peux te faire cela en VBA

A te relire.

Jean-Eric a écrit :

Re,

Je peux te faire cela en VBA

A te relire.

Oui si tu veux bien

merci encore

Re,

Réponse en début d'après-midi.

Cdlt

ok merci 8)

Re,

Voir fichier et code ci-dessous.

Je prépare les commentaires pour la compréhension.

Je travaille sous 2010, me dire si les résultats sous 2007 sont corrects. Sinon, il me faudra adapter le code

Option Explicit
Public Sub Création_TCD()
Dim Wsd As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable

    Application.ScreenUpdating = False
    Set Wsd = Worksheets("TCD")

    For Each PT In Wsd.PivotTables
        PT.TableRange2.Clear
    Next PT

    Set PTCache = ActiveWorkbook.PivotCaches.Create(SourceType:= _
        xlDatabase, SourceData:="Tableau1")
    Set PT = PTCache.CreatePivotTable(TableDestination:=Wsd.Cells(2, 1), TableName:="TCD_1")

    PT.ManualUpdate = True

    PT.AddFields RowFields:=Array("Voiture", "Modèle")

    With PT.PivotFields("Coût")
        .Orientation = xlDataField
        .Function = xlSum
        .Caption = "Coût total"
        .NumberFormat = "# ##0.00"
    End With

    With PT
        .ColumnGrand = True
        .RowGrand = False
        .NullString = "0"
        .DisplayFieldCaptions = False
        .ShowDrillIndicators = False
        .ManualUpdate = False
        .ManualUpdate = True
    End With

End Sub
18tcd-hyppo8010.xlsm (22.33 Ko)

Merci JEAN ERIC

super... par contre je veux bien les commentaires pour que j'apprenne les fonctions

bonsoir

sans tdc; ni vba (comme tu as l'air interessé par les formules )

tu fais Ctrl et F3 pour voir les plages dynamiques

tu cliques sur les zones de resultats pour y voir les formules

apres avoir selectionné la marque ,tu iras dans validation pour voir la realisation d'une liste

10hipo8010.zip (16.74 Ko)

cordialement

Re,

Le TCD est crée à partir du "tableau1" (dynamique) en feuille "Base de données".

Le TCD est actualisé à chaque activation de la feuille "TCD".

Quelques explications du code utilisé:

Option Explicit
Public Sub Création_TCD()
      Dim Wsd As Worksheet
      Dim PTCache As PivotCache
      Dim PT As PivotTable
          ' on désactive l'actualisation de l'écran pour accélérer l'exécution
          ' du code de la macro.
10        Application.ScreenUpdating = False
20        Set Wsd = Worksheets("TCD")
          ' on efface le(s) tableaux croisés dynamiques (TCD)
30        For Each PT In Wsd.PivotTables
40            PT.TableRange2.Clear
50        Next PT
          ' on crée un nouveau cache de TCD à partir
          ' du "Tableau1" en feuille "Base de données".
60        Set PTCache = ActiveWorkbook.PivotCaches.Create(SourceType:= _
              xlDatabase, SourceData:="Tableau1")
          ' on crée le rapport de TCD à partir du cache précédemment crée.
70        Set PT = PTCache.CreatePivotTable(TableDestination:=Wsd.Cells(2, 1), _
              TableName:="TCD_1")
          ' le TCD n'est recalculé qu'à la demande de l'utilisateur.
80        PT.ManualUpdate = True
          ' on ajoute le nom des champs de ligne issus du TCD.
90        PT.AddFields RowFields:=Array("Voiture", "Modèle")
          ' idem pour les valeurs
100       With PT.PivotFields("Coût")
110           .Orientation = xlDataField
120           .Function = xlSum
130           .Caption = "Coût total"
140           .NumberFormat = "# ##0.00"
150       End With

160       With PT
              ' on affiche des totaux généraux pour les colonnes.
170           .ColumnGrand = True
              ' on n'affiche pas des totaux généraux pour les lignes.
180           .RowGrand = False
              ' on gère les cellules contenant des valeurs Null.
190           .NullString = "0"
              ' on désactive l'affichage des boutons de filtre et les légendes
              ' pour les lignes.
200           .DisplayFieldCaptions = False
              '
210           .ShowDrillIndicators = False
              ' on calcule le rapport de TCD.
220           .ManualUpdate = False
              '.ManualUpdate = True
230       End With
End Sub
Rechercher des sujets similaires à "synthese somme criteres"