begin process at 2012 02 16 01:02:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Fichier / Disque

 > 

[OLE][Excel] : désallocation mémoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[OLE][Excel] : désallocation mémoire

mercredi 18 mai 2005 à 14:57:15 | [OLE][Excel] : désallocation mémoire

PpPool

Bonjour à tous,

OS : Windows 98 OS/2
VB 6.0
MAPI 6.0
Library Microsoft Excel 8.0

je rencontre un pb qui commence sincérement à m'énerver. J'espère que la communauté va pouvoir me venir en aide.

Présentation de l'appli :
Depuis 2 ans, j'ai une appli qui tourne, qui me permet de récupérer des pièces jointes reçues par mail. Cette appli se regénére dans le temps comme un automate (lancement toutes les heures).
Ces pièces jointes sont en fait des fichiers excel pré-paramètrés que je reçois de nos clients.
L'appli doit procéder à un traitement de ces fichiers pour réaliser des récaps.

Voici le décor planté !

Probléme :
De manière complétement aléatoire, je dis bien aléatoire (des journées cela se passe bien, d'autres journées, c'est le basard), des process excel (1 à n) restent actifs dans le gestionnaire des tâches. Ces process quand je cherche à les 'killer' sont soit en fin de tâche, soit complétement mort (message de windows : process terminé anormalement);

Très rarement, mais cela est arrivé quand même j'ai carrément un message de mémoire insuffisante qui me plante l'appli.


Exemple de code :

Dim Feuil_Excel_Tampon As Object

Set Feuil_Excel_Tampon = CreateObject("Excel.application")
       
        Feuil_Excel_Tampon.Application.Workbooks.Open (Dir.Path & "\Debug\thread n°" & I & ".xls")
        Feuil_Excel_Tampon.Application.Visible = False

'Traitement 

        Feuil_Excel_Tampon.Application.ActiveWorkbook.SaveAs FileName:=Dir.Path & "\Debug\tampon - thread n°" & I & ".xls", _
        FileFormat:=xlNormal
       
        'Ferme l'objet en cours
        Feuil_Excel_Tampon.Application.Quit
        'Désallocation mémoire
        Set Feuil_Excel_Tampon = Nothing

Je multiplie ce genre de procédures plusieurs fois.
J'ai vérifié toutes mes procédures, à chaque fois je ferme correctement mon objet excel.application, et je désalloue correctement la mémoire.

Alors MYSTERE, vraiment MYSTERE. j'ai essayé de réinstaller plusieurs fois office, et rien n'y fait. L'appli tourne sur un poste dédié qui ne fait rien d'autres. C'est une machine correcte (PIV, 512 Mo de mémoire).

Voyez vous une solution ????
Comment désallouer la mémoire de manière certaine ?
Est-il possible de faire des pointeurs d'objets en VB ?

Merci d'avance pour votre aide, car là franchement je nage


PpPool
jeudi 19 mai 2005 à 14:20:58 | Re : [OLE][Excel] : désallocation mémoire

aogie

Bonjour,

Je vois que tu travailles sans référence sur la librairie Excel (Dim Feuil_Excel_Tampon As Object suivi d'un CreateObject()). L'avantage est bien évidemment de n'avoir aucun impact sur la version de l'application Excel. En revanche, tout objet intermédiaire sur un appel donné doit clairement être nommé. En effet, il y a quelquefois des "pertes de référence", notamment sur l'objet Application.
Crée autant de variables de type Object que d'objets Excel utilisés. Tu ne dois pas "traverser" les différents objets pour faire appel à une méthode du 3ème objet "traversé". Il vaut mieux ne pas dépasser un objet après ta référence...
En VBA (interne à l'exécutable), tu peux écrire :
Dim o As Object
Set o = CreateObject("...")
o.obj1.obj2.obj3.f1(...)


Pour ton cas (externe car automation) :
Dim o As Object, o1 As Object, o2 As Object, o3 As Object
Set o = CreateObject("...")
Set o1 = o.obj1
Set o2 = o1.obj2
Set o3 = o2.obj3
o3.f1(...)


De plus, je pense qu'il y a une erreur car ta variable Feuil_Excel_Tampon est déjà une référence sur l'objet automation "Application".
Tu ne dois donc pas utiliser la propriété "Application", utilisée pour le code VBA (interne à l'Exe). Toi tu te trouves à l'extérieur et tu travailles par automation, ta référence pour l'objet "Application" est ta variable.
        Feuil_Excel_Tampon.Application.Workbooks.Open (Dir.Path & "\Debug\thread n°" & I & ".xls")
        Feuil_Excel_Tampon.Application.Visible = False
devient
        Feuil_Excel_Tampon.Workbooks.Open (Dir.Path & "\Debug\thread n°" & I & ".xls")
        Feuil_Excel_Tampon.Visible = False



-- AOGie --


Cette discussion est classée dans : appli, excel, mémoire, tampon, feuil


Répondre à ce message

Sujets en rapport avec ce message

Mémoire tampon en Excel [ par gregorydekimpe ] Bonjour à tous,Voilà je débute en programmation VB depuis que je suis engagé et...dur, dur! En gros j'ai du faire une macro qui permet de récupérer de Conserver une constante en mémoire après fermeture appli [ par vbmag ] Bonjour,Dans une petite appli en VB6 sous Excel 2003 (Windows XP Pro), je rapatrie d'un fichier Excel des infos à partir d'un autre fichier Excel. Ces ComboBox qui alimente une feuil [ par fartouk ] Bonjour, mon problème est le suivant, je souhaite que mes "comboBox" alimente une feuil "Excel". Ensuite je souhaite que cette feuil soit enregistré Problèmes de mémoire avec macro excel [ par Rone22171 ] Bonjour, J'ai fait une macro excel qui permet de copier des graph d'un excel vers un fichier word. Ce que je constate c'est que la mémoire cache ( Problème mémoire avec macro excel [ par Rone22171 ] Bonjour, J'ai fait une macro excel qui permet de copier des graph d'un excel vers un fichier word. Ce que je constate c'est que la mémoire cache ( vb6 comment se passer d'un classeur excel [ par raynald31 ] Bonjour, comme à force de chercher partout je pense que je veux faire dans la complexité alors que ça doit être très simple pour que je ne le pense. a Repport de données sur excel [ par kxiop ] Bonjour, Pouriez vous m'aider SVP, j'ai dans un classeur "A" Feuil "1" un tableau où je complete les cellules avec des données et dans un classeur "B [Catégorie modifiée VB6 -> VBA] [Macro VBA excel 2007filtrer ]sommer des données d'un fichier excel et copier le resultat dans une autre feuil [ par mohhh166 ] Bonjour à tous je suis coinsé pour faire une macro sur excel 2007 qui me calcule des somme filtrer d'un fichier excel ,en fait ce que je veux faire un Problème déploiement application [ par Moundir76 ] Bonjour, après avoir developpé une appplication sur ma machine, j'aurais souhaité installer celle ci sur un serveur. Dans visual Studio je fais "Publi ouvrir une checkbox pour imprimer feuil excel [ par lefou63a ] Salut je souhaite ouvrir une checkbox et que cela imprime les feuils que j'ai cocher, j'ai essayé plusieurs choses en vain. Je sais faire imprimer e


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,869 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales