vialstephane
Messages postés89Date d'inscriptionmercredi 29 octobre 2003StatutMembreDernière intervention22 mai 2008
-
7 mai 2004 à 10:52
boulet82
Messages postés2Date d'inscriptionlundi 13 juin 2005StatutMembreDernière intervention26 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).
lefoudingue
Messages postés1Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention28 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 :)
castor_furieux
Messages postés13Date d'inscriptionlundi 12 avril 2004StatutMembreDernière intervention24 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
vialstephane
Messages postés89Date d'inscriptionmercredi 29 octobre 2003StatutMembreDernière intervention22 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
cs_titan1234
Messages postés2Date d'inscriptiondimanche 27 juillet 2003StatutMembreDernière intervention12 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.
sardauk421
Messages postés1Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention20 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
' 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
' 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
'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
' 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
cs_gerfaut
Messages postés1Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention26 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
cs_samy56
Messages postés39Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention27 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.
boulet82
Messages postés2Date d'inscriptionlundi 13 juin 2005StatutMembreDernière intervention26 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.