Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > SDK
SDK Forum d'entraide pour la programmation des outils BO par des API (VBA, ASP, Java)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2010, 18h51   #1
Invité régulier
 
Inscription : avril 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 67
Points : 9
Points : 9
Par défaut BO5.1 export PDF

Bonjour,
J'ai une macro dans une requête qui me permet d'exporter mon rapport au format pdf. cette requête lorsque je la lance me demande de choisir le code d'un client et mon rapport exporté porte le nom :"code_client.pdf".
Mon problème est que je dois relancer ma requête et ma macro pour chacun de mes clients...
ma question est la suivante : Si je crée dans mon rapport une rupture sur le code client, est il possible en VBA de créer un pdf pour chacunes de mes ruptures ?
MERCI
antakini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 07h07   #2
Invité régulier
 
Inscription : avril 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 67
Points : 9
Points : 9
Bonjour,
J'ai trouvé sur le net un code qui semble répondre à mes attentes, en jouant sur les sections à la place des ruptures :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Option Explicit
Sub FilterAndExport()
  Dim mydoc As Document
  Dim myrpt As Report
  Dim myFilterVar As DocumentVariable
 
  Dim i, j, noOfReports, intNumChoices As Integer
  Dim myFilterChoices As Variant
  Dim strNextValue As String
 
  'Active Document
  Set mydoc = ActiveDocument
 
  ' Active (with focus) Report
  Set myrpt = ActiveReport

  ' Put your variable (or query object) here
  Set myFilterVar = mydoc.DocumentVariables("State")
 
  ' find out how many values there are for the variable
  intNumChoices = UBound(myFilterVar.Values(boUniqueValues))
  ' collect the number of choices in a variant variable
  myFilterChoices = myFilterVar.Values(boUniqueValues)
  For i = 1 To intNumChoices
   
    ' Get the variable value
    strNextValue = myFilterChoices(i)
   
    noOfReports = mydoc.Reports.Count
    For j = 1 To noOfReports
    Set myrpt = mydoc.Reports.Item(j)
   
    ' build filter
    myrpt.AddComplexFilter myFilterVar, "=<State> = " & """" & strNextValue & """"
   
    ' recompute the report
    myrpt.ForceCompute
   
    Next j
   
    'Declare Directory Structure
   Dim DocPDF_Dir As String
  'Set Directory Structure
  'DocPDF_Dir = "C:\Documents and Settings\Desktop\"
  DocPDF_Dir = "C:\Documents and Settings\Desktop\"

  'Declare Filenames
  Dim Document_Name As String
  'Set Filenames
  Document_Name = "2006" & "_" & strNextValue
  'Distribute Files
  ActiveDocument.ExportAsPDF (DocPDF_Dir & Document_Name)
     
  Next i
  ' now, unless I can find a RemoveComplexFilter function, this line is used
  ' to invoke a filter that is always true.
 
  myrpt.AddComplexFilter myFilterVar, "=(1=1)"
  myrpt.ForceCompute
End Sub
antakini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 11h16   #3
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 274
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 274
Points : 5 674
Points : 5 674
Bonjour,

Je n'aurais pas dit mieux. Cependant une petite précision : la présence d'une section n'est pas nécessaire.

En fait le fonctionnement de cette macro consiste à :
  • Récupérer toutes les valeurs pour tous les clients
  • Pour chaque client :
    • Filtrer le rapport sur le client correspondant
    • Exporter en pdf pour le client correspondant
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 12h38   #4
Invité régulier
 
Inscription : avril 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 67
Points : 9
Points : 9
merci pour la précision ...

si je comprend bien, c'est à ce niveau du code que le filtre se fait :
Code :
1
2
' Put your variable (or query object) here
  Set myFilterVar = mydoc.DocumentVariables("State")
antakini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h10   #5
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 274
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 274
Points : 5 674
Points : 5 674
Non, ce n'est pas ici...

Pour expliquer le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Option Explicit
Sub FilterAndExport()

'Déclaration des variables 
  Dim mydoc As Document
  Dim myrpt As Report
  Dim myFilterVar As DocumentVariable
 
  Dim i, j, noOfReports, intNumChoices As Integer
  Dim myFilterChoices As Variant
  Dim strNextValue As String
 
  'Enregistre dans une variable le document actif
  Set mydoc = ActiveDocument
 
  ' Enregistre dans une variable le rapport actif
  Set myrpt = ActiveReport

  ' Enregistre dans une variable l'objet "State"
  Set myFilterVar = mydoc.DocumentVariables("State")
 
  ' Enregistre dans une variable le nombre de valeurs de l'objet "State"
  intNumChoices = UBound(myFilterVar.Values(boUniqueValues))
  ' Enregistre dans une variable les valeurs de l'objet "State"
  myFilterChoices = myFilterVar.Values(boUniqueValues)
  'Parcoure toutes les valeurs de l'objet "State"
  For i = 1 To intNumChoices
   
    ' Récupère la valeur "en cours" de l'objet "State"
    strNextValue = myFilterChoices(i)
   
    'Récupère le nombre de rapports du document
    noOfReports = mydoc.Reports.Count
    'Parcoure l'ensemble des rapports du document
    For j = 1 To noOfReports
    'Enregistre dans une variable le rapport "en cours"
    Set myrpt = mydoc.Reports.Item(j)
   
    ' Application sur le rapport en cours du filtre sur l'objet "State" avec la valeur de l'objet "State" en cours 
    myrpt.AddComplexFilter myFilterVar, "=<State> = " & """" & strNextValue & """"
   
    ' Force le réaffichage du rapport en cours
    myrpt.ForceCompute
   
    Next j
   
  'Ensuite, il s'agit des lignes pour l'export PDF du document filtré, et des lignes pour la "suppression" du filtre
    'Declare Directory Structure
   Dim DocPDF_Dir As String
  'Set Directory Structure
  'DocPDF_Dir = "C:\Documents and Settings\Desktop\"
  DocPDF_Dir = "C:\Documents and Settings\Desktop\"

  'Declare Filenames
  Dim Document_Name As String
  'Set Filenames
  Document_Name = "2006" & "_" & strNextValue
  'Distribute Files
  ActiveDocument.ExportAsPDF (DocPDF_Dir & Document_Name)
     
  Next i
  ' now, unless I can find a RemoveComplexFilter function, this line is used
  ' to invoke a filter that is always true.
 
  myrpt.AddComplexFilter myFilterVar, "=(1=1)"
  myrpt.ForceCompute
End Sub
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h46   #6
Invité régulier
 
Inscription : avril 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 67
Points : 9
Points : 9
MERCI Beaucoup pour ces précisions; ça paraît vite plus simple ou du moins plus clair lorsque c'est bien expliqué .
antakini est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h23.


 
 
 
 
Partenaires

Hébergement Web