Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1290 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1943753
p2np
Posté le 23-11-2009 à 21:46:14  profilanswer
 

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

mood
Publicité
Posté le 23-11-2009 à 21:46:14  profilanswer
 

n°1943761
Laoo
Posté le 23-11-2009 à 22:18:18  profilanswer
 

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

n°1943772
p2np
Posté le 23-11-2009 à 22:50:04  profilanswer
 

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)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Excel VBA, API SendMessage ne fonctionne pasfiltrage automatique sur excel par bouton et action VBA
Macro excelVBA Excel - activecell étirement
[VBA] Exécution macro dans un autre classeur[VBA] Rechercher une valeur dans une colonne ?
Noob pour un .bat svp[VBA-Word] remplacer la mise en forme d'un texte entre guillemets
macro excel 2007 
Plus de sujets relatifs à : [VBA] A la rescousse d'un noob en galère sur une macro


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR