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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VB6 et Application Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VB6 et Application Excel

n°1698071
mnyware
En vrai YATA !!!
Posté le 06-03-2008 à 11:15:05  profilanswer
 

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

mood
Publicité
Posté le 06-03-2008 à 11:15:05  profilanswer
 

n°1698240
mnyware
En vrai YATA !!!
Posté le 06-03-2008 à 14:11:48  profilanswer
 

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


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

  VB6 et Application Excel

 

Sujets relatifs
[Resolu] Excel VBA Regrouper des valeurs depuis des classeurs/feuillesimprimer un onglet excel depuis access
Insertion de ligne automatique excel...CREER UN CATPRODUCT A PARTIR D'UNE NOMENCLATURE EXCEL
[Résolu] Import de données brutes Excel avec ADO.netChanger une application VBA pour un autre language de programmation
Récupérer des données de word pour les archiver dans un tableau excel[Excel] Supprimer un caractère d'un texte
VBA Excel, problème de filtre avec valeurs décimalescréer un macro sur excel
Plus de sujets relatifs à : VB6 et Application Excel


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