Erreur - automation error -> fermeture brutale

Signaler
Messages postés
7
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,

Je travail actuellement avec business object, qui me récupère un tableau de 60000 lignes sur 7 colonnes que je copie ensuite sur Excel.

Jusqu'à la tout va bien.

J'arrive ensuite, par le biais d'une macro, à trier ces 60 000 lignes dans différents fichiers en fonction de leur contenu, et de re-trier le contenu de chacun de ces fichiers. Ces fichiers sont au nombre de 60, enregistrés sur un réseau local.

Mon ordinateur n'étant pas une bête de course, cela prends environ 8 minutes.

Néanmoins, j'ai eu à faire à un problème :

de temps en temps, un message d'erreur "error automation" venait interrompre l'exécution de la macro.
Passé un temps, je n'ai plus eu le droit à ce message d'erreur, mais à une fermeture brute d'Excel, ce qui est étrange car même en présence de : application.displayalerts=false, les erreurs du compilateur sont censés toujours être là.

J'ai donc eu l'idée de passé ma macro en priorité haute (processus), en demandant de l'aide sur ce site.

Cela marche une première fois, que mon ordinateur soit verrouillé ou non, mais si jamais la macro doit se lancer le lendemain à une heure prévue (sheduled task) alors, cette fois ci la macro plantera...

Autrement dit, ma macro marche au maximum une fois à la suite.

J'ai ensuite essayer de faire une RAZ de chacune des variables que j'utilisais grâce à des "set mavariable = Nothing" afin de libérer la mémoire utilisée... mais rien n'y fait, ma macro n'est pas stable.

Ce qui est étrange, c'est que l'erreur d'automation (ou maintenant la coupure brutale) ne se passe jamais au même moment... c'est aléatoire.

je voudrais bien vous montrer mes lignes de codes, mais je ne peux rien faire sortir du travail ou je suis...

Est-ce un problème d'algorithme trop long ? ou un algorithme qui prendrait trop de mémoire ?

A savoir que je ferme business object après avoir effectuer la copie de ce tableau.


Je vous remercie d'avoir prit le temps de lire tout ceci,

Je m'excuse de ne pas pouvoir vous faire parvenir le code, c'est plutôt ingrat de ma part !

Cordialement.

12 réponses

Messages postés
7
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013
1
REPONSE ACCEPTEE


merci à tout les deux, ucfoutu et jordane45
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
Impossible de formuler un avis autorisé sans voir (ton code) entre autres :
- quand et comment tu te mets en automation avec BO
- quand et comment tu mets un terme à ce "lien"
Fermer un fichier BO n'est pas quitter BO.

Et aussi : comment se fait exactement cette copie (par quelle méthode exacte). Car si par Copy et Paste, le presse-papiers en prends un sacré coup au passage.
Messages postés
7
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013
1
Voila pour ce qui est du lien fait avec BO :

Sub Importation()

Dim SourceBO As String
SourceBO = "xxxxxxx"
'connect => BO avec le login
Set appbo = CreateObject("BusinessObjects.Application")

' affiche BO
appbo.Visible = True
appbo.Interactive = False
'appbo.Window.State = boMaximized

' Login
appbo.LoginAs "xxxxxxx", "xxxxxx", False, "xxxxxx"

'Ouvre le document
Set docBO = appbo.Documents.Open(SourceBO)

' efface toutes les variables non prompt
VarCount = docBO.Variables.Count
For j = VarCount To 1 Step -1
If docBO.Variables.Item(j).IsUserPrompt = False Then
docBO.Variables.Item(j).delete
End If
Next

' affiche les variables
For j = 1 To docBO.Variables.Count
Sheets("Menu").Range("a" & j) = docBO.Variables.Item(j).Name
Next



' refresh query
docBO.Refresh

NbrReport = docBO.Reports.Count

For i = 1 To docBO.Reports.Count

docBO.Reports.Item(i).Activate

Set BOCmdBar = appbo.CmdBars.Item(2)
'MsgBox BOCmdBar.Name

Set BOCmdBarControls = BOCmdBar.Controls
Set BOCmdBarPopup = BOCmdBarControls.Item(2)
'MsgBox BOCmdBarPopup.Caption


Set BOCmdBarButton = BOCmdBarPopup.CmdBar.Controls.Item(20)
'MsgBox BOCmdBarButton.Caption

BOCmdBarButton.Execute

'collage de la selection dans Excel
Cells(1, 1).Select
ActiveSheet.Paste


Next
'Fermeture requete BO en enregistrant
'docBO.Close boSaveIfModified
docBO.Close

'Quitte BO
appbo.Quit

'RAZ memoire
Set appbo = Nothing

Merci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
On ne voit pas à quelle Copie (mise dans le presse-papiers, donc) correspond de Paste fait. On ne connait pas non plus le "poids" de cette mise en presse-papiers.
Je note par ailleurs que tu crées plusieurs objets (tes set) mais n'en détruis qu'un seul.
Messages postés
7
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013
1
Je te ferais parvenir plus de lignes dès demain.

Néanmoins, je crois que ma macro arrive finalement à marcher lorsque mon ordinateur n'est pas verrouillé, mais dans le cas contraire, elle échoue à chaque fois.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
" ma macro arrive finalement à marcher lorsque mon ordinateur n'est pas verrouillé
"
Et il est "verrouillé" comment et par quoi ?
Messages postés
7
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013
1
session Windows verrouillée, (Windows+L)

La macro est lancée par une tache planifiée.

D'habitude, de plus petite macro arrivent à se lancer parfaitement même avec ma session verrouillée.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
"session Windows verrouillée, (Windows+L) "
Merci, mais cela ne me dit pas qui lance ce Windows+L ni pourquoi !
Messages postés
7
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013
1
Tout simplement moi...

c'est un ordinateur au travail, je le verrouille quand je pars et au petit matin les macros font leur boulot avant mon arrivée
Messages postés
30310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2020
338
Bonjour.
Il arrive bien souvent que des programmes manipulés en "automation" aient besoins d'avoir la session active.
Cela peut en effet être la cause de votre souci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Un ordinnateur verrouillé est ... verrouillé, hein ...
Et quand il est verrouillé, il ne travaille pas.
Voilà.
Messages postés
7
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013
1
et bien, la plupart de mes macro fonctionnent lorsque mon ordinateur est verrouillé.

Celle ci doit être trop gourmande...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Si tu l'affirmes, ma foi ...
Je te laisse maintenant là...