[VBA] A la rescousse d'un noob en galère sur une macro

A la rescousse d'un noob en galère sur une macro [VBA] - VB/VBA/VBS - Programmation

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 ? :-/

Reply

Marsh Posté le 23-11-2009 à 21:46:14   

Reply

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 !!!

Reply

Marsh Posté le 23-11-2009 à 22:50:04    

Merci pour ta réponse Laoo,
 
J'accepte volontiers le statut d'ignare de luxe :D
 
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)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed