Erreur - automation error -> fermeture brutale

chiken38 Messages postés 7 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013 - 7 oct. 2013 à 18:48
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 8 oct. 2013 à 21:30
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.
A voir également:

12 réponses

chiken38 Messages postés 7 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013 1
8 oct. 2013 à 21:29
REPONSE ACCEPTEE


merci à tout les deux, ucfoutu et jordane45
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 7/10/2013 à 19:32
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.
0
chiken38 Messages postés 7 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013 1
8 oct. 2013 à 18:34
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 oct. 2013 à 18:46
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.
0

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

Posez votre question
chiken38 Messages postés 7 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013 1
8 oct. 2013 à 18:51
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 oct. 2013 à 19:11
" ma macro arrive finalement à marcher lorsque mon ordinateur n'est pas verrouillé
"
Et il est "verrouillé" comment et par quoi ?
0
chiken38 Messages postés 7 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013 1
8 oct. 2013 à 20:00
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 oct. 2013 à 20:04
"session Windows verrouillée, (Windows+L) "
Merci, mais cela ne me dit pas qui lance ce Windows+L ni pourquoi !
0
chiken38 Messages postés 7 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013 1
8 oct. 2013 à 20:15
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
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
8 oct. 2013 à 20:59
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 oct. 2013 à 21:00
Un ordinnateur verrouillé est ... verrouillé, hein ...
Et quand il est verrouillé, il ne travaille pas.
Voilà.
0
chiken38 Messages postés 7 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013 1
8 oct. 2013 à 21:28
et bien, la plupart de mes macro fonctionnent lorsque mon ordinateur est verrouillé.

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

0
Rejoignez-nous