Faire un group by sur deux colonnes en VBA et un calcul

Huguo90 Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

J'ai un tableau ainsi, je souhaite faire comme un group by avec deux calculs dessus comme ça:



Je vous ai mis l'image.
Mes données sont Num et résults et j'aimerais faire un petit tableau comme ça c'est bcp plus de données mais ici c'est un exemple que j'ai simplifié.

Merci d'avance,
Huguo
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
utilises-tu Excel?
quelle signification donnes-tu à "group by" dans ce contexte?
qu'as-tu essayé en VBA?
as-tu essayé d'utiliser des formules pour faire cela? ou un TCD?
0
Huguo90 Messages postés 63 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai envie de faire exactement comme dans ma question
Option Explicit
Dim oWbk As Workbook

Sub GenereTCD()
Dim oSheet As Workbook
Dim i As Integer
Dim J As Integer
'suppression des feuille Existantes
Set oWbk = ThisWorkbook
Application.DisplayAlerts = False
For i = oWbk.Sheets.Count To 2 Step -1
oWbk.Sheets(i).Delete
Next
Application.DisplayAlerts = True

'Ajouter les nouvelles feuilles
For i = oWbk.Sheets.Count + i To 3
oWbk.Sheets.Add After:=oWbk.Sheets(oWbk.Sheets.Count)

Next
oWbk.Sheets(2).Name = "Données Traitées"

'Tableau croisé dynamique Données traitées



Creation_TCD "TCD", "Num", "Result", ""


oWbk.Sheets("Données Traitées").Activate
Application.ScreenUpdating = True

End Sub

Private Sub Creation_TCD(sTCDName As String, sheetName As String, _
sField1 As String, sField2 As String)
Dim Ilig As Integer
Dim oSheet As Worksheet
Dim oCache As PivotCache


'création du tableau croiser dynamique
Ilig = 2
oWbk.Activate
Set oSheet = oWbk.Sheets("Base de données")

'creation du Cache du tableau
Set oCache = oWbk.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:="Tableau_base", Version:=xlPivotTableVersion15)

'Création du Tableau
oCache.CreatePivotTable _
TableDestination:=oWbk.Sheets(sheetName).Cells(Ilig, 2), _
TableName:=sTCDName
Set oSheet = oWbk.Sheets(sheetName)

'Ligne du TCD

With oSheet.PivotTables(sTCDName).PivotFields(sField1)
.Orientation = xlRowField
.Position = 1

End With

If sField2 <> "" Then
With oSheet.PivotTables(sTCDName).PivotFields(sField2)
.Orientation = xlRowField
.Position = 2

End With

End If




oSheet.PivotTables(sTCDName).CompactLayoutRowHeader = UCase(sField1)

'Supprime les lignes Vide
oSheet.PivotTables(sTCDName).PivotFields(sField1) _
.PivotFilters.Add Type:=16, Value1:="(Vide)"

'En nombre et Pourcentage
oSheet.PivotTables(sTCDName).AddDataField _
oSheet.PivotTables(sTCDName).PivotFields("Nom"), "NOMBRE", xlCount
oSheet.PivotTables(sTCDName).AddDataField _
oSheet.PivotTables(sTCDName).PivotFields("Nom"), "POURCENTAGE", xlCount

With oSheet.PivotTables(sTCDName).PivotFields("Pourcentage")
.Calculation = xlPercentOfTotal
.Numerformat = "0.00%"

End With



End Sub
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
ton code fonctionne bien?
0