begin process at 2010 02 10 15:48:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

[VB6 + EXCEL 97] Le processus Excel reste en mémoire


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

[VB6 + EXCEL 97] Le processus Excel reste en mémoire

vendredi 16 décembre 2005 à 13:24:18 | [VB6 + EXCEL 97] Le processus Excel reste en mémoire

Rrominet

Hello,

Je suis en train de faire une application d'affichage de statistiques via VB6 avec un affichage de graphique dans EXCEL97.

Je rencontre un problème lorsque j'exécute + d'une stat dans mon programme.
En fait le processus "Excel" reste en mémoire et me met une erreur à partir de la 2sde exécution de mes stats, donc obligé de passer par [Ctrl]+[Alt]+[Suppr] pour le fermer...

Quelqu'un aurait une idée du problème ? Peut-être que je ferme mal mon fichier ?

Voilà le code de ma procédure :

Private Sub GenererGraphExcel(NomGraph As String, cheminGraphExcel As String, Condition as String)
'Fonction qui va générer un fichier Excel contenant le graph demandé
    Dim feuille As Worksheet '--> .Cells(Lig, Col)
    Dim graphique As Chart, fso As New FileSystemObject
    Dim rec As DAO.Recordset, i As Long, MonExcel As Object

    On Error GoTo ErrGenererGraphExcel
    Set MonExcel = CreateObject("Excel.Application")
    MonExcel.Visible = False
    MonExcel.UserControl = True
    MonExcel.Workbooks.Open FileName:=App.Path & "\Reports\" & NomGraph & ".xls"
    Set feuille = MonExcel.Worksheets("Données")
    feuille.Cells(1, 1) = "Nom du responsable": feuille.Cells(1, 2) = "Nombre de devis"
    Set rec = CreateSnapshot(Condition)
    i = 3
    While Not rec.EOF
          feuille.Cells(i, 1) = rec("Champ1"): feuille.Cells(i, 2) = rec("Champ2")
          rec.MoveNext
          i = i + 1
          DoEvents
    Wend
    rec.Close
        
    'Enregistrement du fichier et MAJ du graphique
    If fso.FileExists(App.Path & "\" & NomGraph & "_gen.xls") Then fso.DeleteFile App.Path & "\" & NomGraph & "_gen.xls", True
    'On va modifier la plage de valeurs sources du graphique
    Set graphique = MonExcel.ActiveChart
    graphique.SetSourceData Source:=Sheets("Données").Range("A3:B" & CStr(i - 1)), PlotBy:=xlRows
    graphique.Refresh
    MonExcel.Workbooks(1).SaveAs App.Path & "\" & NomGraph & "_gen.xls"
    MonExcel.Workbooks(1).Close
    MonExcel.Workbooks.Open FileName:=App.Path & "\" & NomGraph & "_gen.xls"
    MonExcel.Visible = True
    GoTo Fin

ErrGenererGraphExcel:
    Select Case Err.Number
        Case 1004: 'SetSourceData du graphique
            Msgbox "Erreur, un processus Excel est déjà ouvert !", vbExclamation
        Case 70: 'Permission refusée
            If MsgBox("Impossible d'enregistrer l'état, le fichier " & App.Path & "\Reports\" & NomGraph & "_gen.xls est déjà ouvert !" & vbCrLf & "Cliquez sur Recommencer dès que le fichier est fermé.", vbRetryCancel) = vbRetry Then
                Resume
            Else
                GoTo Fin
            End If
        Case Else:
            If MsgBox("Erreur inattendue, cliquez sur Recommencer pour tenter une nouvelle fois l'opération." & vbCrLf & "Erreur n°" & Err.Number & " : " & Err.Description, vbRetryCancel) = vbRetry Then
                Resume
            Else
                GoTo Fin
            End If
    End Select

Fin:
End Sub

Merci d'avance pour votre aide :-)

vendredi 16 décembre 2005 à 13:26:11 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

Rrominet

Oops, j'allais oublier, bizarrement mon programme me met une erreur "1004" ou "-2147417851" en me disant que "La méthode 'SetSourceData' de l'objet '_Chart' a échoué"...

Et ça me bloque que sur cette ligne. Malheureusement sans cette ligne mon graphe ne donne pas grand chose :-)
vendredi 16 décembre 2005 à 13:49:48 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

Rrominet

En fait j'ai du nouveau, il semblerait que quand je fini ma procédure je ne ferme pas mon objet de type "Excel.Application", ce qui fait que tant que je n'ai pas quitté mon appli principale, l'objet reste en mémoire et pose problème...

Comment ferme-t'on cet objet ?

MonExcel.Close me jette...

Encore merci pour vos (futures) réponses ;-)
vendredi 16 décembre 2005 à 13:51:51 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

pseudoOM

Oui j'ai exactement le même problème mais avec Excel 2000 ! Je ne sais pas pourquoi, pourtant je met bien "nomObjetExcel.quit" quand j'ai fini mes opérations mais le processus reste quand même en mémoire. Bizar quand même! Désolé mais je ne sais pas t'aider plus ! Peut être que quelqu'un d'autre le pourra (et pas la même occasion, m'aider aussi) !

 pseudoOM
vendredi 16 décembre 2005 à 15:29:47 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

rooridge

Salut,

il faut d'abord fermer le/les workbook(s) en faisant :
"monObjetExcel.workbooks(i).close 0"
"0" pour fermer sans sauvegarder.

Puis killer le processus en faisant :
"monObjetExcel.Application.Quit"

Sans oublier l'objet :
"set monObjetExcel = nothing"

Comme dirait jean claude convenant, "j'ai bon là, nan ?"

++,
rooridge.
vendredi 16 décembre 2005 à 15:35:27 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

eldim

Bonjour,

Y a déja des tas de sujet la dessus...
Plusieurs solutions :
Kill du proces excel

ou plus simple
Encapsuler toutes les variables et les événement Excel dans une même class
Attention à ne pas mettre ta variable de class public
Et Excel se terminera proprement...
vendredi 16 décembre 2005 à 16:10:24 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

Rrominet

Pour l'instant, pour me dépanner j'ai fait un exécutable séparé qui s'exécute pour chaque stat et qui se ferme automatiquement après l'avoir générée, Ca fonctionne sans problème !

Mais je vais tester la solution de rooridge, le Set monObjet = Nothing est pas bête :-)
Je n'y avais pas pensé !!



Pour ce qui est de killer le processus eldim, si jamais mon client a ouvert un Excel manuellement entre temps, je ne pourrais pas savoir lequel killer. Et si je kill les 2, ça lui ferme aussi le sien sans sauvegarder. C'est un peu trop "hard" comme solution, même si j'y avais songé en dernier recours...


Merci pour vos réponses ;-)
vendredi 16 décembre 2005 à 16:17:45 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

Rrominet

Je viens de tester vos solutions.

Malheureusement aucune ne fonctionne...
Même le KillProcess me fait quand même une erreur sur la méthode "~" de l'objet "~" qui a été déchargée, alors que je recrée bien un objet de A à Z (comme la première fois quoi).

Je vais rester sur mon petit exécutable indépendant, ce sera moins pratique mais au moins ça tourne ;-)

Merci quand même pour vos réponses !!
vendredi 16 décembre 2005 à 16:24:45 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire
lundi 19 décembre 2005 à 12:14:18 | Re : [VB6 + EXCEL 97] Le processus Excel reste en mémoire

pseudoOM

Ok !  Moi j'ai testé la solution de rooridge et elle fonctionne ! Merci beaucoup !

 pseudoOM

1 2

Cette discussion est classée dans : excel, graphique, rec, monexcel, nomgraph


Répondre à ce message

Sujets en rapport avec ce message

graphique Excel comme contrôle [ par J-F ] Bonjour,Comment obtenir un contrôle sur un formulaire qui serait un graphique Excel généré par le programme et sur lequel on puisse cliquer pour attei graphique excel [ par cat ] Je fait un graphique sous excel a partir de VB, c'est génial, ca marche tres bien, mais je voudrais que le graph se mette à jour dans mon container ol Modifier une info bulle dans un graphique excel [ par Jean ] Serait-il possible de personnaliser les infos affichées dans une infobulle lorsque l'on pointe une série ou un point du graphiqueMerciJean Exporter un graphique d'excel vers vb [ par Af@rnofo ] Je fait un prog pour lequel j'ai besoin de stats, donc de faire des graphiques. Les graphiques se font dans excel et s'affiche dans excel, jusque là c comment creer un graphique dans excel depuis VB [ par laurent3d ] Bonjour,Comment creer un graphique dans une feuille excel depuis mon appli VBJ'arrive à remplir des cellules grace à une source de ce site, mais j'aur Graphique pour excel.URGENT!!! [ par ben ] Mon programme cree une feuille graphique.J'arrive a nommer mon graphique mais mon probleme est que je n'arrive pas a nommer ma nouvelle feuille graphi Créer un graphique Excel à partir de VB [ par Silvia ] Je travaille actuellement en VB6, et voudrais transférer des données sous forme de graphique sur Excel ? graphique et excel [ par seb ] - Comment tracer depuis vb un graphique excel en nuage de point?- et comment ne faire apparaitre que le graphique (directement)? cad sans la feuille d Créer un graphique dans Excel [ par PaulScholes ] Je veux créer un graphique dans Excel 2000, à partir d'access 97Quand j'execute les commandes suivantes :ClasseurXLS.Sheets("Feuil2").SelectCharts.Add VBA EXCEL: Données X et Y pour un graphique [ par Petitgus ] Salut !Je cherche à insérer ds un graphique (nuage de pts) des séries directement à partir des valeurs contenues dans des variables (vecteurs ou matri


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 1,763 sec (3)

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