Réalisation d'un TCD via une macro
Mika
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un gros souci lorsque j'essaye d'utiliser une macro pour réaliser un tcd.
Lorsque je le réalise manuellement sans passer par une macro tout marche nickel et j'ai le résultat voulu. Lorsque je fais une macro et que je réalise les mêmes manipulation celui-ci se plante avec erreur d'exécution "5" Argument ou appel de procédure incorrect.
J'ai lu que cela pouvait se produire car la macro enregistre L'instruction de ligne par la lettre L et qu'il faut la remplacer par la lettre R (row ) pour que le vba puisse le comprendre correctement.
Mais lorsque je regarde mon code VBA celui ci contient bien le R pour les lignes.
Voici ce que j'ai comme code en passant par le débogage.
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"NB Heures OC par Chantier!R1C1:R1048576C4", Version:=7).CreatePivotTable _
TableDestination:="NB Heures OC par Chantier!R1C8", TableName:= _
"Tableau croisé dynamique7", DefaultVersion:=7
C'est sur cette ligne de code qu'il se plante et je ne vois pas où est le problème. Qui peut m'aider à résoudre ce big problème?
Merci d'avance pour votre aide.
J'ai un gros souci lorsque j'essaye d'utiliser une macro pour réaliser un tcd.
Lorsque je le réalise manuellement sans passer par une macro tout marche nickel et j'ai le résultat voulu. Lorsque je fais une macro et que je réalise les mêmes manipulation celui-ci se plante avec erreur d'exécution "5" Argument ou appel de procédure incorrect.
J'ai lu que cela pouvait se produire car la macro enregistre L'instruction de ligne par la lettre L et qu'il faut la remplacer par la lettre R (row ) pour que le vba puisse le comprendre correctement.
Mais lorsque je regarde mon code VBA celui ci contient bien le R pour les lignes.
Voici ce que j'ai comme code en passant par le débogage.
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"NB Heures OC par Chantier!R1C1:R1048576C4", Version:=7).CreatePivotTable _
TableDestination:="NB Heures OC par Chantier!R1C8", TableName:= _
"Tableau croisé dynamique7", DefaultVersion:=7
C'est sur cette ligne de code qu'il se plante et je ne vois pas où est le problème. Qui peut m'aider à résoudre ce big problème?
Merci d'avance pour votre aide.
A voir également:
- Réalisation d'un TCD via une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tcd excel - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Partager des photos via un lien - Guide
6 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
quand tu montres du code, il est préférable de montrer le code complet, et d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
as-tu utilisé l'enregistreur de macros?
quand tu montres du code, il est préférable de montrer le code complet, et d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
as-tu utilisé l'enregistreur de macros?
Je suis novice en excel et je ne sais pas comment te montrer tout le code avec la balise de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
J'ai utilisé en effet l'enregistreur de macro. Je vais aller voir le lien hypertexte que tu viens de m'envoyer sur ton message.
Je peux t'envoyer le fichier aussi. bien à toi
J'ai utilisé en effet l'enregistreur de macro. Je vais aller voir le lien hypertexte que tu viens de m'envoyer sur ton message.
Je peux t'envoyer le fichier aussi. bien à toi
voici mon code pour la macro complète qui ne fonctionne pas lorsque je l'active pour l'exécuter.
l'erreur apparait à la ligne ActiveWorkbook.pivotCaches ......... lorsque je passe par le débogage
l'erreur apparait à la ligne ActiveWorkbook.pivotCaches ......... lorsque je passe par le débogage
Sub Macro12()
'
' Macro12 Macro
'
'
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"NB Heures OC par Chantier!R1C1:R56C4", Version:=7).CreatePivotTable _
TableDestination:="NB Heures OC par Chantier!R1C10", TableName:= _
"Tableau croisé dynamique14", DefaultVersion:=7
Sheets("NB Heures OC par Chantier").Select
Cells(1, 10).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique14")
.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("Tableau croisé dynamique14").PivotCache
.RefreshOnFileOpen = False
.MissingItemsLimit = xlMissingItemsDefault
End With
ActiveSheet.PivotTables("Tableau croisé dynamique14").RepeatAllLabels _
xlRepeatLabels
ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("Tableau croisé dynamique14").PivotFields( _
"Formateur Titulaire")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique14").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique14").PivotFields( _
"Nbr H" & Chr(10) & "Formateur" & Chr(10) & "Titulaire"), "Nombre de Nbr H" & Chr(10) & "Formateur" & Chr(10) & "Titulaire", xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique14").PivotFields( _
"Nom CHANTIER")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique14").PivotFields( _
"Nombre de Nbr H" & Chr(10) & "Formateur" & Chr(10) & "Titulaire")
.Caption = "Somme de Nbr H"
.Function = xlSum
End With
Selection.CurrentRegion.Select
Selection.NumberFormat = "[h]:mm"
End Sub
Tout à fait c'est ce que j'ai fais. J'ai lancé l'enregistreur de macro et réalisé ce que je voulais avoir comme TCD puis j'ai arrêté la macro. Là j'ai eu mon résultat escompté donc parfait. Ensuite j'ai effacé le tableau TCD ( que j'ai réalisé sur la même feuille que les données qui m'ont permis de faire le tcd). J'ai relancé la macro pour essayer d'avoir le TCD et c'est là que la macro se plante royalement sur la ligne de code ActiveWorkBook.PivotCaches.Create .........
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
https://docs.google.com/spreadsheets/d/1MqzXN1zyL3LABQx5bZqjNjJLX2XY0WyH/edit?usp=sharing&ouid=113444901287396211353&rtpof=true&sd=true
ceci semble mieux fonctionner:
Dim destrg As Range
Set destrg = Sheets("NB Heures OC par Chantier").Cells(1, 10)
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"NB Heures OC par Chantier!R1C1:R56C4", Version:=7).CreatePivotTable _
TableDestination:=destrg, TableName:= _
"Tableau croisé dynamique14", DefaultVersion:=7