Exportation vers fichier excel avec BO

vialstephane Messages postés 89 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 22 mai 2008 - 7 mai 2004 à 10:52
boulet82 Messages postés 2 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 septembre 2007 - 26 sept. 2007 à 14:13
Bonjour,

Je voudrais exporter les données d' une requete Business Object vers un fichier excel en automatique.

Je suis arrivé en modifiant la macro dans un fichier script.rep, a enregistrer sous le format PDF avec un SaveAS dans la macro.
Mais le format XLS,CSV ne passe pas !
J'aimerais savoir si quelqu'un connaitrait la commande en VBA pour exporter les données plutot que les sauvées (SaveAS).

Je vous remercie d'avance

11 réponses

vialstephane Messages postés 89 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 22 mai 2008
7 mai 2004 à 17:38
toujours pas d'idée ;-)
0
lefoudingue Messages postés 1 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 28 mai 2004
28 mai 2004 à 16:02
Alors tu as trouvé une solution finalement?
Est il possible d'executer une macro excel qui rapatrierait les resultats de differentes requetes business object?
Merci d'avance :)
0
vialstephane Messages postés 89 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 22 mai 2008
28 mai 2004 à 16:19
non pas trouvé !
:sad)
0
castor_furieux Messages postés 13 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 24 février 2005
26 août 2004 à 10:52
Bonjour,

je dois developper des macro en VBA pour BO. je sais pas ou trouver de la doc.

j'ai fais pas mal de macro sous excel, et j'ai trouvé facilement des bouquins et des info sur les "fonctions" de VBA pour excel (cells, workbooks, range, cells,.....)

par contre, pour BO, je trouve que dalle... et j'ai vraiment besoin de ses infos.

si vous en trouvez, pensez à moi.

merci d'avance.

wilfrid.bonnet@laposte.net
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vialstephane Messages postés 89 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 22 mai 2008
26 août 2004 à 13:25
voila on peut commander BO en utilisant les commandes du menu
par exemple ci_dessous ça exporte une requete BO dans un fichier excel en selectionnant le contenu de la requete et copier-coller dans une feuille excel.

Voila j'espere que ça seras assez clair et que ça te serviras, je l'utilise pour mon taf et ça marche nickel

Je remmerci aussi la personne qui m'avait repondu sur un forum et qui m'avait conseiller de commander directement les item du menu de BO. Merci a lui

@+

Sub Gestion_Xls()
Dim BOCmdBar As CmdBar
Dim BOCmdBarControls As CmdBarControls
Dim BOControlButton As Control
Dim BOCmdBarPopup As CmdBarPopup
Dim BOCmdBarButton As CmdBarButton
Set xcl = CreateObject("Excel.Application")
strFileName = "c:\mon_fichier.xls"
'Creation du XLS
xcl.Workbooks.Add
xcl.Visible = True
'Execute la commande 'copier tout' du menu 'Edition' de BO
'2nd menu et 20ème commandes
Set BOCmdBar = Application.CmdBars.Item(2)
Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
BOCmdBarButton.Execute
xcl.Application.DisplayAlerts = False
xcl.Sheets("Feuil1").Select
xcl.ActiveSheet.Paste
xcl.ActiveWorkbook.SaveAs Filename:=strFileName, _
FileFormat:=17, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
xcl.Quit
Set xcl = Nothing
end sub
0
cs_titan1234 Messages postés 2 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 12 septembre 2004
12 sept. 2004 à 19:07
Bonjour,

Je suis trés interessé par cette macro car je dois developper une appli a partir de requetes bo sur excel.

Si j'ai bien compris dans ta procédure tu utilises bo pour piloter excel alors que moi je voudrais utiliser excel pour piloter BO et je ne connais pas trop bien BO.

Aurais tu par hazard une idée?

Ma macro doit ouvrir succesivement trois fichier BO, les rafraichir,modifier dans un input boxe les variables, copier et coller les données rafraichies dans differentes feuilles de calcul.

Je me suis essayé sur ce genre de macro il y a quelques temps deja mais j'ai abondonné car ça planté au moment du rafraichissement.

Il faudrait que je retrouve le code sourcez de ces macros pour que je te les envoie.

En attendant merci et bon courage.
0
sardauk421 Messages postés 1 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 20 janvier 2005
20 janv. 2005 à 16:07
Bonjour ,


vu la date de la question , je suppose qu'une solution a été trouvvée depuis . Mais je vais tout de même y repondre, car il est vrai, comme vous l'avez souligné , qu'il est tres difficile de trouver des infos sur les macros sous BO , donc ça servira peut etre a la prochaine personne qui effectuera une recherche ...


De mon côté , j'ai un applicatif qui exploite plusieurs requetes BO . Je lance une macro sous BO qui va ouvrir , raffraichir , puis exporter les données sous Excel , et enfin refermer les requetes , puis sauvegarder le fichier Excel . D'un traitement manuel prenant 5 a 10 minutes chaque jour , l'automatisation arrive a le faire en moins de 1 minute .


Ci dessous le script

Sub export()


Dim BOCmdBar As CmdBar
Dim BOCmdBarControls As CmdBarControls
Dim BOControlButton As Control
Dim BOCmdBarPopup As CmdBarPopup
Dim BOCmdBarButton As CmdBarButton


Dim affectation As Document
Dim doc1 As Document
Dim doc2 As Document
Dim doc3 As Document
Dim doc4 As Document
Dim doc5 As Document



Set xcl = CreateObject("Excel.Application")


' 1) MISE A JOUR DES DONNEES D'AFFECTATIONS


' ouvre le fichier excel destinataire
strFileName = "M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\liste des affectations.xls"
xcl.Workbooks.Open Filename:=strFileName
xcl.Visible = True


' reinitialise les données de l'onglet affectations
xcl.Sheets("feuil1").Select
xcl.Cells.Select
xcl.Selection.ClearContents
xcl.Range("A1").Select


' ETAPE DE RAFFRAICHISSEMENT DE DONNEES
Set affectation = Application.Documents.Open("M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\affectations PF.rep")
affectation.Refresh



'Execute la commande 'copier tout' du menu 'Edition' de BO
'2nd menu et 20ème commandes
' selectionne les données BO et les copie dans Excel
Set BOCmdBar = Application.CmdBars.Item(2)
Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
BOCmdBarButton.Execute


xcl.Application.DisplayAlerts = False
' selectionne l'onglet Excel destinataire de la copie
xcl.Sheets("feuil1").Select
xcl.Range("A1").Select
xcl.ActiveSheet.Paste





' sauvegarde le fichier Excel
xcl.ActiveWorkbook.SaveAs Filename:=strFileName, _
FileFormat:=17, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
xcl.Quit
Set xcl = Nothing





' 2) MISE A JOUR DES DONNEES DES COMMENTAIRES


' ouvre le fichier excel destinataire
Set xcl = CreateObject("Excel.Application")
strFileName = "M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\LOGA v2.xls"
xcl.Workbooks.Open Filename:=strFileName
xcl.Visible = True


' reinitialise les données de commentaires
'xcl.Sheets("macro").Select
'xcl.Application.Run "commentaires.xls!purge"


xcl.Sheets("com lig log").Select
xcl.Cells.Select
xcl.Selection.ClearContents
xcl.Sheets("com lig ordo").Select
xcl.Cells.Select
xcl.Selection.ClearContents
xcl.Sheets("com cde log").Select
xcl.Cells.Select
xcl.Selection.ClearContents
xcl.Sheets("com cde ordo").Select
xcl.Cells.Select
xcl.Selection.ClearContents
xcl.Range("A1").Select


' 2A ) raffraichissement des données commentaires ligne log
Set doc1 = Application.Documents.Open("M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\commentaires lignes logistique.rep")
doc1.Refresh



'Execute la commande 'copier tout' du menu 'Edition' de BO
'2nd menu et 20ème commandes
' selectionne les données BO et les copie dans Excel
Set BOCmdBar = Application.CmdBars.Item(2)
Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
BOCmdBarButton.Execute


xcl.Application.DisplayAlerts = False
' selectionne l'onglet Excel destinataire de la copie
xcl.Sheets("com lig log").Select
xcl.Range("A1").Select
xcl.ActiveSheet.Paste
doc1.Close



' 2B ) raffraichissement des données commentaires ligne ordo
Set doc2 = Application.Documents.Open("M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\commentaires lignes ordo.rep")
doc2.Refresh



'Execute la commande 'copier tout' du menu 'Edition' de BO
'2nd menu et 20ème commandes
' selectionne les données BO et les copie dans Excel
Set BOCmdBar = Application.CmdBars.Item(2)
Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
BOCmdBarButton.Execute


xcl.Application.DisplayAlerts = False
' selectionne l'onglet Excel destinataire de la copie
xcl.Sheets("com lig ordo").Select
xcl.Range("A1").Select
xcl.ActiveSheet.Paste
doc2.Close



' 2C ) raffraichissement des données commentaires cde ordo
Set doc3 = Application.Documents.Open("M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\commentaires commandes ordo.rep")
doc3.Refresh



'Execute la commande 'copier tout' du menu 'Edition' de BO
'2nd menu et 20ème commandes
' selectionne les données BO et les copie dans Excel
Set BOCmdBar = Application.CmdBars.Item(2)
Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
BOCmdBarButton.Execute


xcl.Application.DisplayAlerts = False
' selectionne l'onglet Excel destinataire de la copie
xcl.Sheets("com cde ordo").Select
xcl.Range("A1").Select
xcl.ActiveSheet.Paste
doc3.Close



' 2D ) raffraichissement des données commentaires cde log
Set doc4 = Application.Documents.Open("M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\commentaires commandes logistique.rep")
doc4.Refresh



'Execute la commande 'copier tout' du menu 'Edition' de BO
'2nd menu et 20ème commandes
' selectionne les données BO et les copie dans Excel
Set BOCmdBar = Application.CmdBars.Item(2)
Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
BOCmdBarButton.Execute


xcl.Application.DisplayAlerts = False
' selectionne l'onglet Excel destinataire de la copie
xcl.Sheets("com cde log").Select
xcl.Range("A1").Select
xcl.ActiveSheet.Paste
doc4.Close





' sauvegarde et quitte le fichier Excel
'xcl.ActiveWorkbook.SaveAs Filename:=strFileName, _
'FileFormat:=17, Password:="", WriteResPassword:="", _
'ReadOnlyRecommended:=False, CreateBackup:=False
'xcl.Quit
'Set xcl = Nothing


' 3) MISE A JOUR DES DONNEES DES COMMANDES GCE



xcl.Sheets("source").Select
xcl.Cells.Select
xcl.Selection.ClearContents


' ETAPE DE RAFFRAICHISSEMENT DE DONNEES
Set doc6 = Application.Documents.Open("M:\LLG\BIO 1\Logistique Industrielle\Planification\5S\Process\Process 3 - Gestion commandes\requetes BO\LOGA\listing commandes GCE.rep")
doc6.Refresh



'Execute la commande 'copier tout' du menu 'Edition' de BO
'2nd menu et 20ème commandes
' selectionne les données BO et les copie dans Excel
Set BOCmdBar = Application.CmdBars.Item(2)
Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
BOCmdBarButton.Execute


xcl.Application.DisplayAlerts = False
' selectionne l'onglet Excel destinataire de la copie
xcl.Sheets("source").Select
xcl.Range("A1").Select
xcl.ActiveSheet.Paste
doc6.Close





' sauvegarde le fichier Excel
xcl.Sheets("INTRO").Select


xcl.ActiveWorkbook.SaveAs Filename:=strFileName, _
FileFormat:=17, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
xcl.Quit
Set xcl = Nothing



End Sub
0
cs_gerfaut Messages postés 1 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 26 janvier 2005
26 janv. 2005 à 11:29
Ma faible contribution à l'effort : la macro précédente a été simplifiée et remise
dans l'ordre (c'est-à-dire rafraissement et copie sous BO, puis collage
sous Excel et fermeture du fichier)

Il me manque encore des détails : comment faire un autoexec pour lancer
automatiquement cette macro au lancement du fichier BO.... Merci de votre
aide.

'Macro BO créée le 25 janvier 2005 par Gerfaut


'Cette commande vise à automatiser l'exportation du résultat d'une requête BO


'vers un fichier Excel. Celui-ci pourra ensuite être employé comme table liée


'dans un gestionnaire de base de données type Access.


<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


Sub Export()





'Déclaration des commandes et contrôles BO


Dim BOCmdBar As CmdBar


Dim BOCmdBarControls As CmdBarControls


Dim BOControlButton As Control


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


' Remarque : pour copier cette macro sur une autre requête, il faut


' modifier le nom du fichier de destination ci-dessous


strFileName = "C:\Gestion\Fichiers exportés\Absences.xls"


Set affectation = Application.Documents.Open("C:\Gestion\Rq BO pour export\Absences.rep")





'1/ Rafraichissement des données de la requête


affectation.Refresh





'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("feuil1").Select


xcl.Cells.Select


xcl.Selection.ClearContents


xcl.Range("A1").Select





'5/ Collage des éléments dans Excel


xcl.Application.DisplayAlerts = False


xcl.Sheets("feuil1").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
0
vialstephane Messages postés 89 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 22 mai 2008
26 janv. 2005 à 13:21
Salut,



Je vous ferais dire que j'ai posté un peu plus haut une macro beaucoup
plus simple y'as bien longtemps qui fait exactement la même chose !

Mais c'est bien au moins on voit que les personnes s'interessent !



Pour le lancement automatique moi j'ulise le planificateur de taches de windows



@+
0
cs_samy56 Messages postés 39 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 27 janvier 2005
8 févr. 2005 à 14:18
salut à tous,

J'ai vu qu'on pouvait copier un résultat et l'envoyé dans Excel, mais peut t'on envoyé les données du résultat une à une. Parceque j'aimerai pouvoir envoyé les données séparement dans une cellule précise.

Si quelqu'un a une solution, ce serai cool.
Merci d'avance.

samy56
0
boulet82 Messages postés 2 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 septembre 2007
26 sept. 2007 à 14:13
Bonjour à tous...
Oui je sais j'arrive un peu apres la bataille...
Désolé :)
D'abord merci pour le code (qui fonctionne parfaitement).
Ensuite juste une question concernant les macros dont vous parlez ici:
Moi j'aimerai integrer des boutons dans mes rapports qui permettent d'activer les macros (sans que l'utilisateur ai à aller dans les menus... Parait que c'est trop compliqué :) )
Est ce possible?
Comment alors?
Faut il passer par des users form?
Merci d'avance pour vos réponses.
0
Rejoignez-nous