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 05/12/2007, 18h39   #1
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Par défaut [BO 6][VBA] Rafraichir une requete en VB

Bonjour,

j'utilise BO.6 et je souhaiter automatiser mes requetes. J'attends les autorisations du support informatique pour acceder à VBA dans BO.

Je souhaite que ma procédure fasse les choses suivantes:

- Ouvrir BO et la requete
- Rafraichir
- Enregistrer la requete sous excel

Voici le début de ma procédure qui ouvre ma requete BO(c'est un code trouver sur le forum)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Sub LanceBO()
Dim objBO, objrep
 
'Ouvre Business Object
Set objBO = CreateObject("BusinessObjects.Application.6")
 
'Connecte l'utilisateur
objBO.LoginAs "xxx", "xxx", True ' (False si connection automatique)
 
 
'Ouvre le rapport
Set objrep = objBO.Documents.Open("G:\Members\v\Docs\Business Object\Odyssey 031207.rep")
 
'Affiche BO
objBO.Visible = True
 
'Rafraichir la requete
objBO.Refresh 
'Ici j'enleve cette ligne car j'ai coché la case "rafraichir automatiquement la requete dans le menu tools\Options\save"
 
End Sub
Ensuite en ce qui concerne l'exportation de ma requete BO vers excel c'est un peu plus compliqué pour moi. J'ai vu quelques procédures VB qui réalise cette action mais je n'ai pas tout compris.

Quelqu'un peut il m'éclairer la dessus svp? Merci
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 19h09   #2
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Bonsoir,
Je ne comprends pas .....
Tu dis vouloir automatiser à l'aide de VBA dans BO.
Je ne vois pas à quoi te servira ce code
Code :
1
2
3
4
5
6
7
8
Sub LanceBO()
Dim objBO, objrep
 
'Ouvre Business Object
Set objBO = CreateObject("BusinessObjects.Application.6")
 
'Connecte l'utilisateur
objBO.LoginAs "xxx", "xxx", True ' (False si connection automatique)
Qui semble plutôt être un VB hors BO (typiquement ce que l'on croise ici du VB Excel qui veut piloter BO)
puisque ce code lance BO
se connecte à une session BO avec ID et password.

Donc il vaut mieux que tu te créée un document BO porteur de ton VBA et qui à l'ouverure ouvrira un à un tes rapports, les rafraîchira ...
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 19h37   #3
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
J'ai fait l'impasse sur l'export
Dans
Code :
1
2
Private Sub Document_AfterRefresh()
Doc.ExportAsExcel("Lecteur:Chemin\Nomdufichier.xls")
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 09h52   #4
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Bonjour Bruno2r,

en fait je découvre BO donc je ne connais pas toutes les possibilités.
Je vai préciser mon projet:

je souhaite créer un deuxième bouton sur un classeur excel ou j'ai déja une macro existente.

Le boutton:

-Ouvre BO, raffraichi et exporte ma requete dans un onglet "Data" de mon classeur
- puis lance ma première macro déja existente pour mettre à jour le classeur avec mes nouvelles données issues de l'extraction BO. (Donc je copie le report dans l'onglet "Data" puis je m'en sert de base pour creer différents report dans différents onglets)

Qu'en penses tu ? Est il mieux de créer un document BO porteur de mon VBA ou bien d'insérer une nouvelle procédure VB excel pour piloter BO? Sachant que je souhaite automatiser tout le processus en 1 ou 2 clics.

Merci pour ta réponse.
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 11h42   #5
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Citation:
Envoyé par derech Voir le message
Bonjour Bruno2r,
en fait je découvre BO donc je ne connais pas toutes les possibilités.
Je vai préciser mon projet:
je souhaite créer un deuxième bouton sur un classeur excel ou j'ai déja une macro existente.
Le boutton:
-Ouvre BO, raffraichi et exporte ma requete dans un onglet "Data" de mon classeur
Comment ? en DDE
c'est à dire que tu as fait au départ ? :
Gestionnaire de données
Exporter
Copier vers un DDE ???
ou sinon quelle méthode ?

Citation:
Envoyé par derech Voir le message
- puis lance ma première macro déja existente pour mettre à jour le classeur avec mes nouvelles données issues de l'extraction BO.
Bah si tu utilises la méthode Copier vers DDE ci dessus il suffit de mettre à jour la liaison ...

Citation:
Envoyé par derech Voir le message
(Donc je copie le report dans l'onglet "Data"
Tu copies ou tu colles ?
Tu copies où ? Tu colles où ?

Citation:
Envoyé par derech Voir le message
puis je m'en sert de base pour creer différents report dans différents onglets)
Je m'en sers de Base ???
différents reprts ... onglets ... dans BO ?

Citation:
Envoyé par derech Voir le message
Qu'en penses tu ? Est il mieux de créer un document BO porteur de mon VBA ou bien d'insérer une nouvelle procédure VB excel pour piloter BO? Sachant que je souhaite automatiser tout le processus en 1 ou 2 clics.
Voilà ce que j'ai compris :
Excel lance BO
Ouvre le document BO
Excel lance le rafraichissement ou le document est automatiquement rafraichi à l'ouverture (peu importe)
la première macro (excel ? 1er bouton ?) met à jour le classeur
Pas besoin de macro pour ça : DDE
Dans l'onglet Dataqui te sert de base ?? pour faire de nouveaux rapports ??
Mais au passage les données tu leur fait quelquechose ?
Explique !
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 12h04   #6
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Pardon je me suis mal exprimé, je reprends:

J'ai un classeur excel et avec une procédure VB. Ma macro se lance via des bouttons sur les différents onglets. Ma macro se sert de données que je colle manuellement dans l'onglet "data".

Maintenant j'utilise BO pour aller chercher ces memes données. Donc je veux copier le Report de BO et le coller dans mon classeur, onglet "data". Bien entendu je veux que mon extraction se lance automatiquement et je veux que tout soit automatisé avec des bouttons.

Citation:
Voilà ce que j'ai compris :
Excel lance BO
Ouvre le document BO
Excel lance le rafraichissement ou le document est automatiquement rafraichi à l'ouverture (peu importe)
Oui

Citation:
la première macro (excel ? 1er bouton ?) met à jour le classeur
Pas besoin de macro pour ça : DDE
Dans l'onglet Dataqui te sert de base ?? pour faire de nouveaux rapports ??
Mais au passage les données tu leur fait quelquechose ?
L'onglet Data de mon classeur regroupe les données dont je me sers dans ma macro. Ce sont les données brut du report BO. A partir de ces données je créé d'autres report dans les différents onglets.
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 12h21   #7
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Au sujet de
Citation:
Maintenant j'utilise BO pour aller chercher ces memes données. Donc je veux copier le Report de BO et le coller dans mon classeur, onglet "data". Bien entendu je veux que mon extraction se lance automatiquement et je veux que tout soit automatisé avec des bouttons.
La solution (tu devrais essayer pour en juger par toi même)
Dans BO :

Gestionnaire de données
Sélectionner la requête
Exporter

Copier vers un DDE >> Message export réussi

Aller dans Excel
Te mettre dans la 1ère cellule en haut à gauche de tes données ou d'une nouvelle feuille
Collage spécial
Dans la boite de dialogue Collage spécial choisir coller avec liaison.

A partir de là, il te suffira :
d'ouvrir ton document BO
de le rafraichir

Basculer vers Excel
Mettre à jour les liaisons (ça doit bien pouvoir se faire avec la macro)
Enregistrer

Basculer vers BO
Enregistrer
Fermer
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 14h54   #8
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Ok je viens de le faire c'est bon

Citation:
Basculer vers Excel
Mettre à jour les liaisons (ça doit bien pouvoir se faire avec la macro)
Enregistrer
Comment procède t-on pour mettre à jour les liaisons?
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 15h16   #9
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Citation:
Comment procède t-on pour mettre à jour les liaisons?
Pour mettre à jour les liaisons il faut
N'avoir qu'une session BO ouverte
Que le document soit BO alimenteur soit ouvert
Trouver en VB Excel le
Code :
1
2
Do Cmd je pense 
équivalant à Menu Edition / Liaisons / Mettre à jour les valeurs
Je m'étais trompé tout à l'heure en disant Fichier de mémoire
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 17h30   #10
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Merci pour toutes ces précisions Bruno

Citation:
Pour mettre à jour les liaisons il faut
N'avoir qu'une session BO ouverte
Que le document soit BO alimenteur soit ouvert
Trouver en VB Excel le
Code :
Do Cmd je pense
équivalant à Menu Edition / Liaisons / Mettre à jour les valeurs
Dans le menu edition de ma fenetre BO, l'onglet Liaisons est grisé, est ce que cela est du au fait que je n'ai pas encore reçu les autorisations concernant VBA dans BO?

Autre chose:

Je suis pas un crack en VB, j'ai commencé il y a peine deux mois et j'apprends entre autre grace à ce forum. Aurez-tu un exemple de procédure VB sous la main qui réalise les actions dont on parle?
Faut-il que je poste plutot sur le forum excel VBA?

Merci
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 17h33   #11
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Ah oui j'allais oublié, qu'est ce qu'une invite en language BO?
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 17h42   #12
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
oui vb excel sur forum excel
on va pas piquer le boulot aux copains

Liaisons dans Menu Edition de BO est grisé car aucun objet DANS BO n'est une liaison d'un objet extérieur.

Moi je te parlais de Edition /Liaisons dans Excel
si tu as bien fait collage spécial Coller avec liaison bien entendu.
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 17h44   #13
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Ah ok, oui c'est bon je l'ai fais
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 17h53   #14
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Citation:
Moi je te parlais de Edition /Liaisons dans Excel
si tu as bien fait collage spécial Coller avec liaison bien entendu
Petit problème, lorsque je fais paste special,j'ai le choix entre paste ou paste link. SI je fais paste link les données se collent avec une erreur dans chaque cellule. Donc j'ai fai paste tout court et la ca marche.

Est ce que c'est bon?
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 18h04   #15
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Citation:
Petit problème, lorsque je fais paste special,j'ai le choix entre paste ou paste link. SI je fais paste link les données se collent avec une erreur dans chaque cellule. Donc j'ai fai paste tout court et la ca marche.

Est ce que c'est bon?
A mon avis NON

C'est quoi cette version en Anglais ...
Et ton rapport était BO était encore ouvert ?
Et c'est quoi comme message d'erreur ?
Et est ce que tu a essayer de voir ce que donnent les erreurs en faisant Edition / Liaisons/ Mettre à jour les valeurs
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 18h34   #16
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Mon rapport BO était encore ouvert oui
l'erreur est la suivante #N/A, et lorsque je fais edition/liaisons/mettre à jour les valeurs, rien ne se passe
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 18h35   #17
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Ca me met Not applicable dans "statut"
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 18h38   #18
Membre émérite
 
Avatar de Ayana
 
Inscription : décembre 2005
Messages : 901
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 901
Points : 900
Points : 900
Citation:
Envoyé par Bruno2r Voir le message
A mon avis NON

C'est quoi cette version en Anglais ...
Et ton rapport était BO était encore ouvert ?
Et c'est quoi comme message d'erreur ?
Et est ce que tu a essayer de voir ce que donnent les erreurs en faisant Edition / Liaisons/ Mettre à jour les valeurs

paste = copie des données
paste link = copie de l'adresse des données (référence)
__________________
--= Ayana =--
Modératrice B.I.

Règles du forum BO

Team BAB - Spécialistes BO

Rubrique BI de developpez.com
Ayana est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 10h28   #19
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 85
Points : 15
Points : 15
Bonjour à tous,
je voudrais traduire cette action avec une procédure VB dans BO 6.

Citation:
Dans BO :

Gestionnaire de données
Sélectionner la requête
Exporter
Copier vers un DDE >> Message export réussi

Aller dans Excel
Te mettre dans la 1ère cellule en haut à gauche de tes données ou d'une nouvelle feuille
Collage spécial
Dans la boite de dialogue Collage spécial choisir coller avec liaison.
j'ai appliquer ce code (trouver sur le forum) mais le problème que je rencontre est que lors du collage dans excel c'est ma procédure qui se colle et non la requete

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Sub ExportExcel()
 
'Cette commande vise à automatiser l'exportation du résultat d'une requête BO
 
'vers un fichier Excel.
 
 
'Déclaration des commandes et contrôles BO
 
Dim BOCmdBar As CmdBar
 
Dim BOCmdBarControls As CmdBarControls
 
Dim BOCmdBarPopup As CmdBarPopup
 
Dim BOCmdBarButton As CmdBarButton
 
 
'Déclaration des documents standard utilisés
 
Dim affectation AS Document
 
 
'Déclaration de l'objet à créer (fichier Excel)
 
SET xcl = CreateObject("Excel.Application")
 
 
'0/ Déclaration des fichiers BO d'origine et Excel de destination
 
strFileName = "G:\Members\V\Docs\Business Object\Résultat Odyssey\Odyssey.xls"
 
SET affectation = Application.Documents.Open("G:\Members\V\Docs\Business Object\Odyssey 031207(1).rep")
 
 
'1/ Rafraichissement des données de la requête
 
'affectation.Refresh - pas besoin car raffraichissement automatique a chaque ouverture
 
 
'2/ Copie des éléments calculées par la requête
 
'   Remarque : il s'agit du 2° menu et de la 20° commande
 
Set BOCmdBar = Application.CmdBars.Item(2)
 
Set BOCmdBarControls = BOCmdBar.Controls
 
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
 
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
 
BOCmdBarButton.Execute
 
 
'3/ Ouverture du fichier Excel destinataire
 
xcl.Workbooks.Open Filename:=strFileName
 
xcl.Visible = True
 
 
'4/ Réinitialisation des données (remise à zéro)
 
'   Remarque : il faut veiller à ne pas renommer l'onglet "feuil1"
 
'   dans le fichier de destination
 
xcl.Sheets("Sheet1").SELECT
 
xcl.Cells.SELECT
 
xcl.Selection.ClearContents
 
xcl.Range("A1").SELECT
 
 
'5/ Collage des éléments dans Excel
 
xcl.Application.DisplayAlerts = False
 
xcl.Sheets("Sheet1").SELECT
 
xcl.Range("A1").SELECT
 
xcl.ActiveSheet.Paste
 
 
'6/ Sauvegarde du fichier Excel puis ON quitte Excel
 
xcl.ActiveWorkbook.SaveAs Filename:=strFileName
 
xcl.Quit
 
SET xcl = Nothing
 
 
End Sub
derech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 13h06   #20
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Salut,
Je ne vois pas l'intérêt d'automatiser cette action de porter en DDE vers Excel le fournisseur de données.
On le fais une fois à la création du document Excel.
Ensuite je t'ai expliqué comment mettre à jour les liaisons dans Excel.
Je ne vois pas ce que tu veux rendre reproductible en VB.
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r 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 11h21.


 
 
 
 
Partenaires

Hébergement Web