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 26/04/2011, 09h49   #1
Invité régulier
 
Homme
Inscription : mars 2007
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : mars 2007
Messages : 27
Points : 8
Points : 8
Par défaut Macro VBA via BO

Bonjour,

Je suis novice en BO et je vous remercie d'avance de votre aide.

J'aimerais à l'aide d'une macro VBA via BO, lancer plusieurs fois un même rapport avec de différents prompts (au nombre de 4) qui seront rentrés en paramètre en vba, puis sauvegarder le rapport sous un nom spécifique par rapport aux variables saisies (par exemple le mois et l'année) en pdf; à chaque lancement du rapport avec chaque variable donnée.

J'ai certe consulté certaines discussions; mais elles ne répondent pas précisément à ma recherche. Je vous remercie.
ManinBI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 11h56   #2
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 271
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 271
Points : 5 670
Points : 5 670
Bonjour,

Non effectivement il n'y a pas de code tout fait sur la section VBA... Néanmoins je pense que la majorité des éléments sont présents dans différents sujets... Il va falloir faire un "mix".

Où en êtes-vous exactement ? Pouvez-vous poster votre code ?
__________________
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 26/04/2011, 13h23   #3
Invité régulier
 
Homme
Inscription : mars 2007
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : mars 2007
Messages : 27
Points : 8
Points : 8
Re

Merci.

Voici mon code. Je me suis basé sur un exemple en ligne. Mon but est de lancer 2 différents rapports BO, avec les mêmes prompts comme des variables rentrées en paramètres dans VBA. (2 rapports Entrée et Sortie avec les mêmes arguments)et les enregistrer sous un nom composé des variables entrées en paramètres.

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
68
Sub Exporter(nom_rapport, Optional valeur_Champ, Optional Date_Debut, Optional Date_Fin)
 
 
    Dim Doc                'Déclaration du Document BO
    Dim i As Integer      'N° de l'invite du rapport BO (varie avec le rapport)
    Dim j, k As Integer  'Autres compteurs
 
     Application.Interactive = False
 
 
                ON Error GoTo ouverture
                SET Doc = Application.Documents.Open("Chemin")
                 FOR i = 1 TO Doc.VARIABLES.Count
                    IF (Doc.VARIABLES.Item(i).Name = "1- Valuer du champ") Then
                          Doc.VARIABLES.Item(i).Value = valeur_champ 
                    IF (Doc.VARIABLES.Item(i).Name = "2- De Date début") Then
                           Doc.VARIABLES.Item(i).Value = Date_debut                     
                    IF (Doc.VARIABLES.Item(i).Name = "3- A Date fin") Then
                           Doc.VARIABLES.Item(i).Value = Date_fin
                             End IF
                 Next i
 
 
                            ON Error GoTo rafraichissement
                            Doc.Refresh
 
 
                             ON Error GoTo exportation
                              Doc.ExportAsPDF ("chemin")
                            Doc.ExportAsTXT ("chemin")
 
                             nb_export = nb_export + 1
                             UpdateProgress (nb_export)
 
                        Else
                            Exit FOR
                        End IF
 
                Next j
 
                Doc.Close
 
        End IF
 
    Next k
 
    Application.ExchangeMode = boUserMode
    Application.Interactive = True
 
Exit Sub
 
'Procédure de lancement lorsqu'ON clique sur le bouton "lancer"
 
Sub Lancer_click()
 
    'Informations sur les rapports
    nb_rapports = 2
    Dim nom_rapport(2) As Variant
    nom_rapport(1) = "Rapport1.rep"
    nom_rapport(2) = "Rapport2.rep"
 
 
    Call invite.Exporter(nom_rapport(1), invite.valeur_champ_text_1.Value, invite.Date_debut_text_1.Value, invite.Date_End_text_1.Value)
    Call invite.Exporter(nom_rapport(2), invite.valeur_champ_text_1.Value, invite.Date_debut_text_1.Value, invite.Date_fin_text_1.Value)
 
    MsgBox ("Génération effectuée avec succès !")
 
End Sub
ManinBI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 13h39   #4
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 271
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 271
Points : 5 670
Points : 5 670
Il y manque certains éléments... Comme la définition du chemin par exemple, ainsi que du nom de fichier dynamique :

(J'imagine que la subroutine "Exporter" se trouve dans le module "Invite")

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
68
69
70
71
72
73
74
75
76
Sub Exporter(nom_rapport, Optional valeur_Champ, Optional Date_Debut, Optional Date_Fin)


Dim Doc 'Déclaration du Document BO
Dim i As Integer 'N° de l'invite du rapport BO (varie avec le rapport)
Dim j, k As Integer 'Autres compteurs
Dim Chemin 'Chemin final des fichiers

Application.Interactive = False

Chemin = CheminSource & nom_rapport & ".rep"

On Error GoTo ouverture
Set Doc = Application.Documents.Open(Chemin)
For i = 1 To Doc.Variables.Count
If (Doc.Variables.Item(i).Name = "1- Valeur du champ") Then
Doc.Variables.Item(i).Value = valeur_champ 
If (Doc.Variables.Item(i).Name = "2- De Date début") Then
Doc.Variables.Item(i).Value = Date_debut 
If (Doc.Variables.Item(i).Name = "3- A Date fin") Then
Doc.Variables.Item(i).Value = Date_fin
End If
Next i


On Error GoTo rafraichissement
Doc.Refresh

On Error GoTo exportation
Chemin = CheminDest & nom_rapport & ".pdf"
Doc.ExportAsPDF ("chemin")
Chemin = CheminDest & nom_rapport & ".txt"
Doc.ExportAsTXT ("chemin")

nb_export = nb_export + 1
UpdateProgress (nb_export)

Else
Exit For
End If

Next j

Doc.Close

End If

Next k

Application.ExchangeMode = boUserMode
Application.Interactive = True

Exit Sub

'Procédure de lancement lorsqu'on clique sur le bouton "lancer"

Sub Lancer_click()

'Informations sur les rapports
nb_rapports = 2
Dim nom_rapport(2) As Variant
nom_rapport(1) = "Rapport1"
nom_rapport(2) = "Rapport2"

'Information sur le répertoire source des rapports :
Dim CheminSource
CheminSource = ....
'Information sur le répertoire de destination des rapports :
Dim CheminDest = ...

Call invite.Exporter(nom_rapport(1), invite.valeur_champ_text_1.Value, invite.Date_debut_text_1.Value, invite.Date_End_text_1.Value)
Call invite.Exporter(nom_rapport(2), invite.valeur_champ_text_1.Value, invite.Date_debut_text_1.Value, invite.Date_fin_text_1.Value)

MsgBox ("Génération effectuée avec succès !")

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 26/04/2011, 14h29   #5
Invité régulier
 
Homme
Inscription : mars 2007
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : mars 2007
Messages : 27
Points : 8
Points : 8
Re

Merci pour la réactivité et merci d'avance pour la suite.

As-tu une idée du module Invite & Exporter? Je croie que mon code est au complet.
ManinBI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 14h56   #6
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 271
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 271
Points : 5 670
Points : 5 670
C'est à dire? Je ne comprends pas la question...
__________________
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 26/04/2011, 15h12   #7
Invité régulier
 
Homme
Inscription : mars 2007
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : mars 2007
Messages : 27
Points : 8
Points : 8
Apperemment comme tu l'as indiqué le code semble incomplet. Il reste le module Invite contenant le sub Exporter. C'est un code que j'ai copier sur internet et essayé d'adapter à mon problème. Mais je n'ai pas trouvé ces parties manquantes. Alors je demandais si vous aviez une idée sur le code restant!

Merci
ManinBI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 15h28   #8
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 271
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 271
Points : 5 670
Points : 5 670
Et bien oui, j'ai mis en rouge ce que j'avais modifié par rapport au code d'origine...

Ce à quoi je faisais allusion, c'est que le Sub Exporter() doit se trouver, pour fonctionner tel quel, dans un module nommé "Invite".
__________________
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 26/04/2011, 16h31   #9
Invité régulier
 
Homme
Inscription : mars 2007
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : mars 2007
Messages : 27
Points : 8
Points : 8
Effectivement, j'ai fait les MAJ dans le SUB Exporter que tu m'as indiqué, mais j'ai toujours un message d'erreur. Peut-être que je me suis mal exprimé. Je reprend ma requête.

Pour un même rapport BO(contenant 3 prompts) ouvert, j'aimerais qu'avec l'aide d'un bonton REFRESH (macro VBA); que le rapport se lance, et se raffraichit plusieurs fois avec des combinaisons de ses 3 variables que j'aurai saisies préalablement en VBA. Et à chaque refresh (correspondant à une combinaison de 3 variables), que le rapport soit enregistré sous format txt et pdf.

merci
ManinBI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 17h13   #10
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 271
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 271
Points : 5 670
Points : 5 670
OK, je n'avais pas compris ça.

Cependant, pour ce qui est des valeurs à prendre en invite, à quel moment et endroit comptes-tu les saisir ?
__________________
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 28/04/2011, 10h49   #11
Invité régulier
 
Homme
Inscription : mars 2007
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : mars 2007
Messages : 27
Points : 8
Points : 8
Bonjour,

Pour les valeurs des invites à prendre, j'aimerais lorsque je cliquerai sur le bouton "refresh" par exemple, que l'invite me demande d'introduire les 6 combinaisons possibles par exemple: (Les dates début et date fin seront pareils dans les 6 cas, et c'est le code qui changera à chaque refresh du rapport).

(date_début, date_fin, Code 1)
(date_début, date_fin, Code 2)
(date_début, date_fin, Code 3)
(date_début, date_fin, Code 4)
(date_début, date_fin, Code 5)
(date_début, date_fin, Code 6).

J'espère que cela est possible. C'est à dire que le rapport se lancera à chaque fois, avec ces 3 variables comme les réponses au Prompt.

Merci.
ManinBI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 09h10   #12
Invité régulier
 
Homme
Inscription : mars 2007
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : mars 2007
Messages : 27
Points : 8
Points : 8
Merci pour tout.

J'ai trouvé la solution. C'est cette ligne de commande qui me manquait pour pouvoir assigner directement des variables à mes prompts dans le rapport.

Code :
Application.Documents.Open(Doc).VARIABLES("Prompt1").Value = Variable1
ManinBI 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 06h58.


 
 
 
 
Partenaires

Hébergement Web