A la rescousse d'un noob en galère sur une macro [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 23-11-2009 à 22:18:18
Non mais t'as vu l'heure????
Tout le monde il est couché, à c't'heure!! 'tous cas, des ignares qui pondent déjà ça, c'est des ignares de luxe, catégorie grand standing! Bravo
Mais, à mon avis, pour avoir une bonne réponse, il faudrait que tu :
1) donnes une copie de ton fichier, ou du moins, un échantillon équivalent.
2) Essaies de déterminer à quel endroit ça merdoie; pour ça, mets des STOP, ou des EXIT SUB dans ta macro, par ci par là, pour pouvoir faire des vérifs, et donner des précisions, parce que là, sinon, bonjour !!!
Marsh Posté le 23-11-2009 à 22:50:04
Merci pour ta réponse Laoo,
J'accepte volontiers le statut d'ignare de luxe
En ce qui concerne mon problème, je sais déjà qu'il y a un problème dès les premières lignes , d'après Visual Basic, à :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'ActiveSheet!R1C1:R1742C19" ).CreatePivotTable TableDestination:="", _
TableName:="TCD1"
(Erreur d'exécution 5 : Argument ou appel de procédure incorrect)
Marsh Posté le 23-11-2009 à 21:46:14
Bonsoir,
On m'a récemment confié une mission que mon statut d'ignare en programmation m'empêche de mener à bien.
Voilà pourquoi je sollicite votre aide.
Je dois réaliser une macro qui permettrait de créer rapidement un tableau croisé dynamique à partir d'une base de donnée.
Seulement voilà, une fois terminé, mon résultat est apparemment bourré de fautes, sans que je comprenne lesquelles.
Sub Macro2()
Range("A1:S1742" ).Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'ActiveSheet!R1C1:R1742C19" ).CreatePivotTable TableDestination:="", _
TableName:="TCD1"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).AddFields RowFields:= _
Array("Commande ", "Fournisseur ", _
"Etat ", "Données" )
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Qté " )
.Orientation = xlDataField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Qté reste " )
.Orientation = xlDataField
.Position = 2
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Qté recue " ).Orientation = xlDataField
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotSelect "", _
xlDataAndLabel, True
Range("A3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Commande " ).Orientation = xlHidden
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotSelect "", _
xlDataAndLabel, True
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).Format xlTable8
Range("B3" ).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Fournisseur " )
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Commande " )
.Orientation = xlRowField
.Position = 2
End With
Range("C3" ).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Affaire " )
.Orientation = xlRowField
.Position = 4
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Marque " )
.Orientation = xlRowField
.Position = 5
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Modèle " )
.Orientation = xlRowField
.Position = 6
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Libellé " )
.Orientation = xlRowField
.Position = 7
End With
ActiveWorkbook.ShowPivotTableFieldList = False
Range("A3:J2850" ).Select
Range("C3" ).Activate
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
Range("C3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Etat " ).Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
Range("D3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Affaire " ).Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
Range("E3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Marque " ).Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
Range("F3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Modèle " ).Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
Rows("3:3" ).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Fournisseur " ).Caption = "Supplier"
Range("B3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Commande " ).Caption = "Cmde"
Range("D3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Affaire " ).Caption = "Affaire"
Range("E3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Marque " ).Caption = "Mrq"
Range("F3" ).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
"Modèle " ).Caption = "Mod"
Columns("A:A" ).Select
Columns("A:A" ).EntireColumn.AutoFit
Columns("B:B" ).ColumnWidth = 19.14
Columns("B:B" ).EntireColumn.AutoFit
Columns("C:C" ).EntireColumn.AutoFit
Columns("D:D" ).ColumnWidth = 20
Columns("D:D" ).EntireColumn.AutoFit
Columns("E:E" ).EntireColumn.AutoFit
Columns("F:F" ).EntireColumn.AutoFit
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
Range("E3" ).Select
Columns("E:E" ).ColumnWidth = 5.29
Columns("F:F" ).ColumnWidth = 5.14
Columns("D:D" ).EntireColumn.AutoFit
Columns("C:C" ).ColumnWidth = 6.43
Columns("B:B" ).ColumnWidth = 7.43
Range("A3:J1910" ).Select
Range("E3" ).Activate
Selection.Copy
Sheets.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:A" ).ColumnWidth = 8.57
Rows("1:1" ).RowHeight = 45
Columns("B:B" ).ColumnWidth = 6.29
Columns("C:C" ).ColumnWidth = 6.71
Columns("D:D" ).EntireColumn.AutoFit
Columns("E:E" ).ColumnWidth = 5.71
Columns("F:F" ).ColumnWidth = 5.71
Columns("G:G" ).EntireColumn.AutoFit
Columns("H:J" ).Select
Range("J1" ).Activate
Selection.ColumnWidth = 7.57
Rows("2:2" ).Select
ActiveWindow.FreezePanes = True
End Sub
Mes fautes sont si atroces ? :-/