Question VBA : Compréhension d´un code VBA + Connexion BusinessObject

kokosei

XLDnaute Nouveau
Bonjour à tous,


Je viens de trouver un nouveau travail en Allemagne et je dois utiliser massivement les macros VBA afin de trouver de nouvelles méthodes pour améliorer le fonctionnement des données, la sécurisation des données ainsi que optimiser les fichiers afin de générer des gains de temps pour les salariés.
J´ai par conséquent 2 nouveaux problèmes que je viens de rencontrer et que je suis dans l´incapacité de résoudre à l´heure actuelle. Comme j´ai appris les macros tout seul en pratiquant le langage VBA, je ne connais pas l´ensemble des expressions relatives à celles-ci. Et par conséquent, je sais que je ne suis encore qu´un Padawan en formation.

• L´une des nouvelles missions que l´on m´a confié est de comprendre et d´améliorer les fichiers d´une autre personne qui a quitté le département mais qui n´a pas eu le temps de renseigner les procédures ou le mode de fonctionnement de ces programmes.
J´ai compris l´essentiel des codes de ses macro, mais il y a une expression récurrente qui revient et que je ne suis pas sûr de comprendre.

----------------------------------------------------------------------------------------------------------------------
Sub Einzelblatt()

Sheets("Einzelblatt").Select

Selection.AutoFilter Field:=1, Criteria1:="<>"

Rows("3:3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Einzelblatt_DB").Select
Columns("A:A").Select

Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Select


Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Einzelblatt").Select

ActiveSheet.ShowAllData
Sheets("Erfassung").Select

End Sub
----------------------------------------------------------------------------------------------------------------------


Je ne sais pas si cette expression a été utilisé afin de permettre la recherche des données pour le copiage des données par le biais de la macro, ou pour régler le problème récurrent venant de l´utilisation du « select » qui a été pour le coup massivement utilisé.


• L´autre problème vient d´une volonté d´automatiser au maximum l´extraction des données en provenance de Business Object, mais j´ai un problème car si je suis capable de l´ouvrir, le programme refuse de se faire sélectionner et la macro me renvoie sur Excel, alors que je voudrais qu´il me dise de sélectionner l´application et de faire ensuite la recherche du fichier.

----------------------------------------------------------------------------------------------------------------------
Sub Extraction ()

' Permet l´ouverture de Businessobjects et l´extraction ultérieure d´une partie des données

If NumLock = False Then NumLock = True 'Juste un contrôle de vérification, pour permettre la saisie des données du mot de passe en évitant les erreurs.

Shell ("C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\busobj.exe") ‘Lancement de l´application

SendKeys ("ouverture1") ' Entrée du mot de passe
SendKeys "{Enter}" 'validation mot de passe

' Ici l´Application s´ouvre correctement, mais on revient ensuite sur Excel alors que je voudrais au contraire qu´on reste sur l´application et que ensuite il fasse l´ouverture du fichier suivant.

Application.Dialogs(xlDialogOpen).Show ("\\f-oukh\home2$\id01424\MyDocs\My Business Objects Documents\userDocs\CVR_Modell_N.rep")'


Cela devrait ressembler à cela en théorie, mais ce n´est pas le cas, car la boite de dialogue s´ouvre sur Excel alors que je voudrais qu´elle s´ouvre sur Business Object puis sélectionne la bonne base de données, l´ouvre puis régénère les données de la calculation en fonction de filtre préétablis

End Sub
----------------------------------------------------------------------------------------------------------------------

Est-ce quelqu´un aurait des idées ou des pistes de réflexion pour résoudre cette situation ?
L´extraction des données prend énormément de temps dans notre activité quotidienne, et je pense qu´une amélioration substantielle de notre rendement pourrait découler de ce travail, si bien sur je peux le mener jusqu´à son achèvement.

Je vous remercie d´avance de l´aide que vous pourrez m´apporter sur ce sujet. En cas de besoin, je peux fragmenter cette demande sur sujets du forum.
 

titiborregan5

XLDnaute Accro
Re : Question VBA : Compréhension d´un code VBA + Connexion BusinessObject

Bonjour kokosei, le forum,

sujet très intéressant à mes yeux car j'y serais peut-être un jour confronté...

(juste comme ça, si tu peux éviter d'écrire en jaune les parties que tu ne comprends pas car c'est illisible chez moi :) ...)

Pour le 1er code qui te pose problème, je crois qu'il reprend les lignes vides pour lui copier les valeurs copiées en début de macro...
Si tu fais le mode pas à pas de ta macro (F8) ça pourra peut-être t'aider...
Sinon, il ya effectivement énormément de select qui ralentissent et alourdissent beaucoup le code...
Tout semble avoir été fait avec l'enregistreur de macro...

Pour la partie BO je ne connais pas du tout les macros vers le logiciel...

Mais que comptes-tu faire avec les données de BO? c'est le seul moyen de les récupérer? une planification ou publication ne peut pas aider??

A te lire,

tibo
 

Modeste geedee

XLDnaute Barbatruc
Re : Question VBA : Compréhension d´un code VBA + Connexion BusinessObject

Bonsour®
si tu as accès à Business Objects, celui-ci est livré avec un interface de développement VBA
c-a-d que comme Word, Powerpoint etc...
Business Objectif utilise directement le langage VBA avec les fonctions VBA dédiées
et permet donc d'exécuter des requetes interactives, et mise en forme des restitutions :
DeskI , WebI, BroadcastAgent

pour des restitutions plus pointues , il existe : CrystalReport
 

kokosei

XLDnaute Nouveau
Re : Question VBA : Compréhension d´un code VBA + Connexion BusinessObject

Salut,

Pour l´exportation par le biais classique, l´on m´a dit qu´ils n´avaient pas payé les options pour le faire. C´est pour cela que j´ai essayé de trouver une autre solution.

pour la Macro VBA en option sur Business Object, je confirme que effectivement celle-ci existe dans ma version (C´est à dire que l´option existe bien), cependant celle-ci est pour le moment désactivée car je ne suis pas considéré comme administrateur, donc je ne peux pas le faire moi meme. Je vais cependant demander à mes collègues qui s´en occupent. Il y a probablement ici une idée potentielle à creuser.

Il est peut-etre meme probable que le fait que je n´ai pas cette option "macro"activée, m´empeche de me connecter au moment de l´identification, ce qui m´interdit de faire la connexion entre excel et BO, en tout cas sur mon poste. Je vais voir si l´administrateur dispose lui de cette option.

Peut-être que on ne l´a tout simplement pas payé et qu´elle est du coup désactivée.
Pour la première macro, c´est exact, elle a fait énormément de chose par le biais de l´enregistreur de macro, ce qui fait effectivement que retrouver le sens global ou la logique de la macro est parfois un peu compliqué.
En revanche, j´ai vérifié l´hypothèse que tu as proposé, et en effet, c´est exact. Ce code recherche bien la première ligne de la colonne qui n´est pas occupé. Donc, j´ai effectivement la réponse à la première question. Et je comprends déjà que je vais pouvoir faire un peu d´optimisation de la macro pour que cela fonctionne sans problème. Donc Merci :)
J´avais pas pensé á utiliser cette option, pourtant je l´avais déja utlisé:)
Aprés je pense qu´il existe peut-etre la posibilité de la faire plus rapide avec une cellule ayant la formule (NBVAL(colonne)
puis sur la macro, dire tu me fais le copier coller sur la ligne portant le numéro de la cellule. (je sais pas si du coup, sur ce type de changement, on gagne du temps, ou alors je garde le fonctionnement actuel, car comme il fonctionne, cela ne serait pas problématique)

Pour la seconde question, voilà le type d´action que je voudrais lui dire de réaliser:
Après l´ouverture + entrée dans l´application

Application.activate
Menu.application.select
« file/Open » .select
“Fichier”.open (Fichier different de Excel)
Données.refresh
Filter1.select
Filter2.select
Filter3.select
...
Extraction.save as + chemin
Je ne sais pas dans quelle mesure cela est possible ou non.
 

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo