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

Résolu/Fermé
Stephane_00 Messages postés 6 Date d'inscription vendredi 15 octobre 2021 Statut Membre Dernière intervention 21 octobre 2021 - Modifié le 15 oct. 2021 à 16:06
Stephane_00 Messages postés 6 Date d'inscription vendredi 15 octobre 2021 Statut Membre Dernière intervention 21 octobre 2021 - 15 oct. 2021 à 18:56
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

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
15 oct. 2021 à 16:47
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
.
0
Stephane_00 Messages postés 6 Date d'inscription vendredi 15 octobre 2021 Statut Membre Dernière intervention 21 octobre 2021
15 oct. 2021 à 17:58
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.

0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
15 oct. 2021 à 18:04
et en supprimant la ligne de code?
0
Stephane_00 Messages postés 6 Date d'inscription vendredi 15 octobre 2021 Statut Membre Dernière intervention 21 octobre 2021
15 oct. 2021 à 18:14
En supprimant cela fonctionne super :)
Je test l'autre point.
0
Stephane_00 Messages postés 6 Date d'inscription vendredi 15 octobre 2021 Statut Membre Dernière intervention 21 octobre 2021
15 oct. 2021 à 18:56
L'autre point est en ordre aussi merci beaucoup pour ton aide ;)
0