gege5908
Messages postés3Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention21 novembre 2007
-
20 nov. 2007 à 08:46
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
22 nov. 2007 à 21:13
Bonjour à tous,
Je suis débutant en VB6. J'ai créé une application sous VB6 qui simule un process industriel. Cette application utilise un classeur Excel (4 feuilles) pour présenter ses résultats.
Lorsque je fait tourner l'application sous VB6 (mode déboguage par exemple) tout se passe bien.
Lorsque je compile et que je fait tourner l'application, alors Excel se "plante" en cours d'écriture de mes résultats. Je doit fermer Excel et je retrouve dans mon application en message d'erreur dans la subroutine qui utilise Excel.
Ci-dessous un extrait de la procédure concernée :
Option Explicit
Dim XlApp As excel.Application
Public Sub Ecriture_Excel()
Boite_Dialogue.CancelError = True
Dim Fichier_A_Ecrire As String
' ....etc
On Error GoTo erreur
'lit le fichier résultat
Boite_Dialogue.Flags = &H806&
'Lecture Nom du Fichier Résultat pour Ecriture Excel"
Boite_Dialogue.DialogTitle = LoadResString(1150 + Langue)
If Fichier_Ouvert_Court <> "" Then
Boite_Dialogue.FileName = Left(Fichier_Ouvert_Court, Len(Fichier_Ouvert_Court) - 4) + ".res"
End If
Boite_Dialogue.Filter = LoadResString(1151 + Langue)
Boite_Dialogue.ShowOpen
'gestion du bouton annuler
If Err.Number = 32755 Then
Exit Sub
End If
Nom_Fich = Boite_Dialogue.FileName
Fichier_A_Ecrire = Boite_Dialogue.FileTitle
X = Right(Nom_Fich, 4)
If Nom_Fich = "" Then
Exit Sub
ElseIf (X <> ".res") Then
msg = MsgBox(LoadResString(780 + Langue), 64, LoadResString(211 + Langue))
Exit Sub
End If
Nom_Fich = Boite_Dialogue.FileName
'Lecture du Fichier Résultat pour Ecriture Excel
Call Lecture_Res(Nom_Fich)
'ouvre l'application Excel
Set XlApp = CreateObject("Excel.Application")
XlApp.Application.Visible = True
'affectation du nom de fichier
X = Chemin_App + LoadResString(1152 + Langue)
'ouverture du fichier type
XlApp.Application.Workbooks.Open (X)
'==========================================
'Ecriture du texte dans la feuille - page 1
'==========================================
With XlApp.ActiveWorkbook.Worksheets("page 1")
.Activate
.Range("C2").Value = NomProj
valeur = Tu
.Range("E5").Value = valeur
' .... etc
End With
'Retour activation page 1 avant enregistrement
XlApp.ActiveWorkbook.Worksheets("page 1").Activate
'gestion du bouton annuler
If Err.Number = 32755 Then
Exit Sub
End If
Nom_Fich = Boite_Dialogue.FileName
If Nom_Fich = "" Then Exit Sub
XlApp.ActiveSheet.SaveAs Nom_Fich
'fermeture application Excel
XlApp.Quit
Set XlApp = Nothing
GoTo suite
erreur:
If Err.Number = 32755 Then
Boite_Dialogue.CancelError = False
Exit Sub
Else
msg = MsgBox("Une erreur s'est produite lors de l'écriture sous Excel", 64, LoadResString(211 + Langue))
End If
suite:
End Sub
Est-ce que quelqu'un aurait une idée sur les causes de ce problème.
merci d'avance
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 20 nov. 2007 à 19:34
Non, je n'ai pas d'idée sûre comme ça... enfin, jsute une intuition (car la difficulté c'est tout même de repérer la ligne mettant excel en défaut) ... si tu laisse Excel Visible (à true) qu'est-ce que cela donne ? Car je sais qu'il arrive que certaines instructions soit mal effectuée quand Visible est False.... en clair met la ligne "XlApp.Application.Visible = False " en remarque...
gege5908
Messages postés3Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention21 novembre 2007 21 nov. 2007 à 07:54
J'ai testé ta suggestion. Sans changement.
En fait l'instruction
"XlApp.Application.Visible = False "
se situe à la fin des opérations d'écriture dans la feuille, juste avant la sauvegarde et la cloture d'Excel.
Le programme se plante avant, et toujours à partir du fichier *.exe issu de la compilation. En éxécution sous environnement VB6 (test) ou en mode débogage il n'y a pas de plantage.
Je dois ajouter aussi que ce programme est déjà assez ancien (6 à 7 ans). Il avait toujours relativement bien fonctionné, à l'exception de quelques défauts de fermeture totale d'Excel. Et tout d'un coup, depuis quelques semaines il se plante (?). J'avoue que je ne comprend pas du tout ce qui se passe car il n'y a pas eu de modification d'écriture dans la zone où le programme apparemment se plante.
A tout hasard, au vu de l'aspect de la feuille excel au moment du plantage, voici les lignes de code où le plantage se produit :
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 22 nov. 2007 à 21:13
As-tu la possibilité de tester ton programme sur un autre ordinateur, car tel que tu décris les choses cela donne l'impression que le problème vient (en quelque sorte) d'ailleurs...