TDC via VBA problème de % et de selection de données

Résolu
Signaler
Messages postés
7
Date d'inscription
vendredi 15 octobre 2021
Statut
Membre
Dernière intervention
21 octobre 2021
-
Messages postés
7
Date d'inscription
vendredi 15 octobre 2021
Statut
Membre
Dernière intervention
21 octobre 2021
-
Bonjour à tous,

Je m'essaye au VBA afin d'automatiser certaines de mes tâches et je dois dire que c'est bien prenant ^^
Je précise que je ne suis pas un spécialiste et donc je m'aide de la fonction enregistrement.

Je rencontre deux soucis dans la création de mon TDC si une âme charitable sais m'éclairer.

Déja voici le résultat que je dois avoir.



1er problème une fois mon code terminé la création du tableau fonctionne bien par contre dans les colonnes %card ci-dessus vous avez un résultat en % avec deux chiffres derrière la virgule mais quand je test ma macro ce n'est plus ainsi voir ci-dessous.



Voici le code :

Sub Macro7()
'
' Macro7 Macro
'

'
Range("M1:S5").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"ScanRate!R1C13:R9698C19", Version:=6).CreatePivotTable TableDestination:= _
"ScanRate!R1C1", TableName:="PivotTable4", DefaultVersion:=6
Sheets("ScanRate").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("PivotTable4")
.ColumnGrand = True
.HasAutoFormat = True
.DisplayErrorString = False
.DisplayNullString = True
.EnableDrilldown = True
.ErrorString = ""
.MergeLabels = False
.NullString = ""
.PageFieldOrder = 2
.PageFieldWrapCount = 0
.PreserveFormatting = True
.RowGrand = True
.SaveData = True
.PrintTitles = False
.RepeatItemsOnEachPrintedPage = True
.TotalsAnnotation = False
.CompactRowIndent = 1
.InGridDropZones = False
.DisplayFieldCaptions = True
.DisplayMemberPropertyTooltips = False
.DisplayContextTooltips = True
.ShowDrillIndicators = True
.PrintDrillIndicators = False
.AllowMultipleFilters = False
.SortUsingCustomLists = True
.FieldListSortAscending = False
.ShowValuesRow = False
.CalculatedMembersInFilters = False
.RowAxisLayout xlCompactRow
End With
With ActiveSheet.PivotTables("PivotTable4").PivotCache
.RefreshOnFileOpen = False
.MissingItemsLimit = xlMissingItemsDefault
End With
ActiveSheet.PivotTables("PivotTable4").RepeatAllLabels xlRepeatLabels
With ActiveSheet.PivotTables("PivotTable4").PivotFields("Noms")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
"PivotTable4").PivotFields("Card ?"), "Count of Card ?", xlCount
ActiveSheet.PivotTables("PivotTable4").PivotFields("Count of Card ?"). _
Orientation = xlHidden
ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
"PivotTable4").PivotFields("Card ?"), "Count of Card ?", xlCount
ActiveSheet.PivotTables("PivotTable4").PivotFields("Count of Card ?").Caption _
= "% card"
ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
"PivotTable4").PivotFields("Numéro transaction"), "Count of Numéro transaction" _
, xlCount
ActiveSheet.PivotTables("PivotTable4").PivotFields( _
"Count of Numéro transaction").Caption = "NB card"
With ActiveSheet.PivotTables("PivotTable4").PivotFields("Card ?")
.Orientation = xlColumnField
.Position = 1
End With
Range("B4").Select
With ActiveSheet.PivotTables("PivotTable4").PivotFields("% card")
.Calculation = xlPercentOfRow
.NumberFormat = "0,00%"
End With
End Sub


La seconde chose :

ok c'est bien le tableau fonctionne mais par contre le but est de crée automatiquement ce tableau à partir de données qui seront différentes à chaque fois et donc quand je colle mes nouvelles données dans le fichier et que j'utilise la macro il va me selectionner uniquement les 9698 lignes alors que le nombre de ligne sera différent à chaque fois, je n'arrive pas à trouver comment faire pour qu'il sélectionne toutes les données en fonction du nombre de ligne.

Merci pour votre aide.



Configuration: Windows / Chrome 94.0.4606.81

4 réponses

Messages postés
17663
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 novembre 2021
946
bonjour,
pour le second point, moi j'essaierais de remplacer
R1C13:R9698C19
par
C13:C19
. je pense que tu aurais pu obtenir cela avec l'enregistreur de macros, en sélectionnant les colonnes complètes.

pour le premier point, si le format "0,00%" donne le résultat attendu quand tu l'utilises via le menu, il suffit peut-être d'utiliser
NumberFormatLocal
au lieu de
NumberFormat
.
Messages postés
7
Date d'inscription
vendredi 15 octobre 2021
Statut
Membre
Dernière intervention
21 octobre 2021

Bonjour,

Merci @yg_be pour le premier point j'ai essayé avec
NumberFormatLocal
cela me met un erreur voir ci-dessous par contre le résultat est bon maintenant.

Messages postés
17663
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 novembre 2021
946
et en supprimant la ligne de code?
Messages postés
7
Date d'inscription
vendredi 15 octobre 2021
Statut
Membre
Dernière intervention
21 octobre 2021

En supprimant cela fonctionne super :)
Je test l'autre point.
Messages postés
7
Date d'inscription
vendredi 15 octobre 2021
Statut
Membre
Dernière intervention
21 octobre 2021

L'autre point est en ordre aussi merci beaucoup pour ton aide ;)