VB6 et Application Excel

VB6 et Application Excel - VB/VBA/VBS - Programmation

Marsh Posté le 06-03-2008 à 11:15:05    

Salut à tous  
 
Je suis sur application VB6 qui récupère toute les actions effectuées dans un journal et je veux exporter mon journal sous Excel (jusque là ça va ) et faire des statistiques avec (là ça se complique).
 
donc j'arrive à créer le fichier et à la mettre en forme . j'ai créer une macro qui permet de faire un tableau dynamique et son graph associé
 
lorsque j'intègre ma macro dans mon appli VB il me fait une erreur sur la fonction PivotTables  (Argument ou appel de procédure incorrect)
 
un peu de code :
 
Sub créerFichierExcel(fichier As Variant)
 
'remise en forme de la date du journal
dateF = Mid(way_file, Len(way_file) - 11, 8)
jj = Right(dateF, 2)
mm = Mid(dateF, 5, 2)
aa = Left(dateF, 4)
 
dateF = jj & "." & mm & "." & aa
 
'on dit que lobjet est de type feuille excel et ouvre Excel
    Set DocExcel = CreateObject("Excel.Application" )
 
   ' supprime laffichage des messages derreurs ou de confirmation de suppression, ...
    DocExcel.DisplayAlerts = False
     
        DocExcel.Workbooks.Add
       ' selectionne la feuille du classeur
        DocExcel.Sheets("Feuil2" ).Select
      '  on supprime cette feuille
        DocExcel.ActiveWindow.SelectedSheets.Delete
       ' on fait pareil avec la feuille 3
        DocExcel.Sheets("Feuil3" ).Select
        DocExcel.ActiveWindow.SelectedSheets.Delete
       ' on selectionne la feuille 1 (la seule qui reste)
        DocExcel.Sheets("Feuil1" ).Select
       ' on change le nom de celle ci
        DocExcel.Sheets("Feuil1" ).Name = "Stats Trafic du " & dateF
     
    DocExcel.Columns("A:D" ).ColumnWidth = 25
     
   ' on met la date et lheure de création du fichier
    DocExcel.Range("A1" ).Select
    test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE09, False, False, 0, False)
    DocExcel.ActiveCell.FormulaR1C1 = "Fait le : " & Date & " à " & Time
     
    ' mise en forme du tableau de recueil des données du journal
    DocExcel.Range("A3:D3" ).Select
    test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE14, True, False, 3, True)
    DocExcel.ActiveCell.FormulaR1C1 = "Trafic journalier du " & dateF
     
    'Mise en forme des champs du tableau
     
    DocExcel.Range("A5" ).Select
    test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE10, True, False, 3, False)
    DocExcel.ActiveCell.FormulaR1C1 = "Heure"
     
    DocExcel.Range("B5" ).Select
    test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE10, True, False, 3, False)
    DocExcel.ActiveCell.FormulaR1C1 = "N° Sélectif"
     
    DocExcel.Range("C5" ).Select
    test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE10, True, False, 3, False)
    DocExcel.ActiveCell.FormulaR1C1 = "Nom du Sélectif"
     
    DocExcel.Range("D5" ).Select
    test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE10, True, False, 3, False)
    DocExcel.ActiveCell.FormulaR1C1 = "Etats"
     
   ' remplissage des champs à partir du fichier journal et de la base de données
    FilePath = way_file
    Set filestream = fs.OpenTextFile(way_file, ForReading, False)
    ligne = 1
    While Not filestream.AtEndOfStream
        lignelog = filestream.ReadLine
        tabligne = Split(lignelog, " " )
         
        If UBound(tabligne) = 4 Then
         
        DocExcel.Range("A" & ligne + 5).Select
        test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE09, False, False, 2, False)
        DocExcel.ActiveCell.FormulaR1C1 = tabligne(1)
         
        DocExcel.Range("B" & ligne + 5).Select
        test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE09, False, False, 2, False)
        DocExcel.ActiveCell.FormulaR1C1 = tabligne(3)
         
        i = 0
         
        Do While Left(t_selectifs(i), 5) <> "FFFFF"
        If Mid$(t_selectifs(i), 7, 4) = "2" & tabligne(3) Then
        nomSel = Mid$(t_selectifs(i), 12, 20)
        nomSel = Replace(nomSel, ".", " " )
        Exit Do
        End If
        i = i + 1
        Loop
         
        DocExcel.Range("C" & ligne + 5).Select
        test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE09, False, False, 2, False)
        DocExcel.ActiveCell.FormulaR1C1 = nomSel
         
        DocExcel.Range("D" & ligne + 5).Select
        test = ParametreExcel(DocExcel, "MS Sérif", TAILLEPOLICE09, False, False, 2, False)
        DocExcel.ActiveCell.FormulaR1C1 = tabligne(4)
       
        ligne = ligne + 1
        End If
    Wend
    filestream.Close
    Set filestream = Nothing
   
  [#c60038] ' sélection de la source data  et création du tableau  croisé dynamique
    DocExcel.Range("A5:D16" ).Select
 
   DocExcel.ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Stats Trafic du 14.02.2008!R5C1:R16C4" ).CreatePivotTable TableDestination _
        :=DocExcel.Range("F5" ), TableName:="Tableau croisé dynamique1"
    DocExcel.ActiveSheet.PivotTables("Tableau croisé dynamique1" ).SmallGrid = False
 
 'table dans 'lignes'
    With DocExcel.ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
        "N° Sélectif" )
        .Orientation = xlRowField
        .Position = 1
    End With
 
 'table dans 'colonnes'
    With DocExcel.ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("Etats" )
        .Orientation = xlColumnField
        .Position = 1
    End With
 
 'table dans 'données'
    With DocExcel.ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
        "Nom du Sélectif" )
        .Orientation = xlDataField
        .Position = 1
    End With
 
 'mise en forme du tableau croisé dynamique
     DocExcel.ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotSelect "", _
        xlDataAndLabel
     DocExcel.ActiveSheet.PivotTables("Tableau croisé dynamique1" ).Format xlTable10
 
    'création du graphique
     DocExcel.Charts.Add
     DocExcel.ActiveChart.SetSourceData Source:=DocExcel.Sheets("Stats Trafic du 14.02.2008" ).Range( _
        "H5" )
     DocExcel.ActiveChart.Location Where:=xlLocationAsNewSheet
     DocExcel.ActiveChart.ChartType = xl3DBarClustered
     DocExcel.ActiveChart.PivotLayout.PivotFields("NB Nom du Sélectif" ).Caption = _
        "NOMBRE D'OCCURENCES DES ETATS PAR SELECTIFS"
     DocExcel.Sheets("Graph1" ).Select
     DocExcel.Sheets("Graph1" ).Move After:=DocExcel.Sheets(2)
     DocExcel.Sheets("Graph1" ).Name = "Graph Etats_sélectifs"

 
   
   ' on sauvegarde la feuille sous le nom contenu dans NomFichier
    DocExcel.ActiveWorkbook.SaveAs FileName:=fichier, _
        FileFormat:=17, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
   
  DocExcel.DisplayAlerts = True
        DocExcel.Visible = True
End Sub
[/#0000ff]
 
merci d'avance

Reply

Marsh Posté le 06-03-2008 à 11:15:05   

Reply

Marsh Posté le 06-03-2008 à 14:11:48    

j'ai trouvé  
j'avais pas ajouté au projet la référence Microsoft Excel

Reply

Sujets relatifs:

Leave a Replay

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