Faire fonctionner un exe conçu en VB6 et excel2003 sur platform WindowsNT avec e

flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005 - 10 mars 2005 à 18:29
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005 - 16 mars 2005 à 07:02
CONTEXT:

J'ai réalisé avec l'aide de ce forum une application en VB6 qui lors de son execution ouvre une form, a partir de la , j'ai des fonctions qui me permettent d'ouvrir et de créer des fichiers excel.
j'ai créé cette application a partir d'une platform Windows Xp Pro, VB6, et excel 2003.
cette exe fonctionne tres bien chez moi et chez des amis qui ont WinXP pro et excel2003, sauf kils doivent installer les deux DLL qui vont avec, jusque la normal.

FAITS:

j'ai un probleme, lorsque j'execute mon programme sur une platform
windows NT, avec excel2000, l'exe se lance pas de probleme, mais lorsque ma form s'ouvre et que je clic sur ouvrir un xls ou créer un xls, c'est la que ca plante
il me fait "erreur programme, cette application va etre arretée, pour defaillance....un truc du genre"...
remarque: kan ce dernier plante, il se ferme, mais dans les processus, "EXCEL.EXE" reste actif, du coup apres pas moyen de demarrer excel.
sauf si biensur je fais terminer le processus (pokoi plant il a cette endroit la?

precision: sur cette derniere platform NT, j'ai egalement install les 2 DLL ds
'winNT/system32/'

Question: que puis je faire pour que cela fonctionne aussi bien sur XP que sur NT?

Merci a vous
A voir également:

6 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
10 mars 2005 à 19:44
Je ne pense pas que ce soit l'OS qui est en cause mais plutôt la version d'Excel installée.
Excel 2003 peut charger un classeur Excel 2000 mais pas l'inverse. Compatibilité ascendante uniquement avec les produits Microsoft.

Loup Gris
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
10 mars 2005 à 22:20
j'suis d'accord, mais justement, j'y avais pensé et donc
les fichiers excel, préprogrammé sur ma becane en vb6 et sur excel2003

eh! ben! je les ai essayé sur NT avec excel 2000, mais juste ouvrire les fichiers excel, et en fait ca marche
donc je comprends pas le probleme de transition entre mon application, l'appel excel, et les fichiers excel!

merci
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
11 mars 2005 à 19:42
Peux tu donner le bout de code qu'il y a dans ton clic pour ouvrir ou créer un xls ?

Loup Gris
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
15 mars 2005 à 22:30
Dim xlApp As Excel.Application 'permet d'ouvrir l'application exel
Dim xlworkbook As Excel.Workbook 'permet de d'ouvrir un workbooks et de tavailler dessus


Dim strSavename As String 'Variable de type string utilise pour le nom de sauvegarde du fichier xls
Dim Fichier As String 'Variable de type string permettant de stoker le nom du fichier a ouvrir
Dim repertoir As String 'variable de type string permettant de stoker le chemin d'acces


Dim existe As Boolean 'Permet de déteminer si le fichier existe déja


Dim msgRep As Integer 'permet de récupérer la réponse de l'utilisateur





'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''API Utile pour lire et écrire dans un fichier ini''''''''''''''''''''''''''''''''''''
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long


Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As Long
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


'Procédure qui permet d'écrire dans un fichier INI


Public Sub EcritDansFichierIni(section As String, cle As String, _
valeur As String, Fichier As String)
WritePrivateProfileString section, cle, valeur, Fichier
End Sub


'Fonction qui permet de lire dans un un fichier ini
Public Function LitDansFichierIni(section As String, cle As String, Fichier As String, _
Optional ValeurParDefaut As String = "") As String


Dim strReturn As String


strReturn = String(255, 0)
GetPrivateProfileString section, cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier
LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)


End Function



Private Sub cmdEraise_Click()


If Fichier = "" Then 'ici il n'y a aucun fichier sélectionné
MsgBox "Vous devez spécifier un fichier à effacer.", vbExclamation, "Erreur de Fichier"
Exit Sub
End If


On Error GoTo Erreur ' initialise le gestionaire d'erreur



msgRep = MsgBox("Désirez-vous vraiment effacer le fichier " & _
Fichier & " !", vbDefaultButton1 + vbExclamation + vbYesNo, "Effacer un fichier")

If msgRep = vbYes Then
Kill repertoir & "" & Fichier 'ici on efface le fichier
filListBox.Refresh 'et on rafaichit le listbox pour qu'il prennent en compre les modifications
End If

Exit Sub


Erreur: 'En cas d'erreur...
If Err.Number = 70 Then 'le fichier est en cours d'utilisation
MsgBox "Impossible de supprimer le fichier car il est en cours d'utilisation!", _
vbExclamation, "Erreur suppression de fichier"
Else 'ici on tient compte des autres type d'erreur qui auraient pu se produire
MsgBox Error, vbExclamation, "Erreur suppression de fichier"
End If
End Sub


Private Sub cmdNew_Click()


If xlApp.Visible = True Then 'on vérifie si un classeur est déja ouvert
MsgBox "Vous ne pouvez ouvrir plus d'un classeur à la fois.", vbExclamation, "Erreur de Fichier"
Else

Recom: 'Ici on recommence si l'utilisateur à saisie un caractère éronné

strSavename = InputBox(" Entrer le nom de sauvegarde du nouveau fichier." & vbNewLine & _
"Le fichier ne doit pas contenir de <>[]/\*&?$% .", "Nom de sauvegarde")

If strSavename = "" Then Exit Sub 'si l'utilisateur appuie sur cancel ou s'il ne saisit rien on quitte la procédure

If InStr(1, "<>[]/\*&?$%", strSavename) <> 0 Then ' On vérifie s'il n'y a pas de caractère que ne peut pas prendre en compte le prog
MsgBox "Le nom de sauvegarde entrée contien un caractère erronée!", vbExclamation, "Erreur de saisie"
GoTo Recom ' Si oui on demande a l'utilisatieur de recommencer la saisie
End If

Call verif ' On call vérifier pour s'assurer que le nom du fichier n'existe pas déja

If existe = False Then


Form2.lbl1.Caption = "Création du fichier " & strSavename & ".xls"
Form2.Show

Set xlApp = Nothing 'on vide l'objet pour eviter d'avoir des erreurs
Set xlApp = New Excel.Application 'On initialise l'objet

On Error GoTo Erreurcreation 'initialise le gestionnaire d'erreur

xlApp.Workbooks.Open App.Path & "\set.xls" 'On ouvre le fichier d'origine
Set xlworkbook = xlApp.Workbooks(1)
xlworkbook.SaveAs repertoir & "" & strSavename 'On le sauvegarde sous un nouveau nom
xlApp.Visible = True 'on rend visible l'application

Form2.fermer 'on ferme la fenête pop up

filListBox.Refresh 'on rafraichit la listbox pour qu'il prenne en compte les nouveaux changements
End If


End If


Exit Sub


Erreurcreation: 'en cas d'erreur
MsgBox "Une erreur s'est produite lors de la création du fichier: " & _
Fichier & vbNewLine & Error, vbCritical, "Erreur de création du fichier"
Unload Form2


End Sub


Private Sub CmdOuvrie_Click()


If Fichier = "" Then 'ici il n'y a aucun fichier sélectioné
MsgBox "Vous devez spécifier un fichier à ouvrir.", vbExclamation, "Erreur de Fichier"


ElseIf xlApp.Visible = True Then 'On vérifie s'il n'y a pas fichier déja ouvert
MsgBox "Vous ne pouvez ouvrir plus d'un classeur à la fois.", vbExclamation, "Erreur de Fichier"
Else

Form2.lbl1.Caption = "Ouverture du fichier " & Fichier
Form2.Show

Set xlApp = Nothing
Set xlApp = New Excel.Application

On Error GoTo ErrFichier

xlApp.Workbooks.Open repertoir & "" & Fichier
Set xlworkbook = xlApp.Workbooks(1)
xlApp.Visible = True

Form2.fermer

filListBox.Refresh

End If
Exit Sub


ErrFichier: 'en cas d'erreur ...

MsgBox "Une erreur s'est produite lors de l'ouverture du fichier: " & Fichier & vbNewLine & Error, vbCritical, "Erreur d'ouverture de fichier"
Unload Form2
End Sub


Private Sub cmdQuit_Click()
Unload Me


End Sub
0

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

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
15 mars 2005 à 23:14
Je crois comprendre, dis moi si je me trompe.
Dans ton appli, tu as coché une référence du genre "Microsoft Excel x.x Object library" ?
Si mes souvenirs sont exacts, x.x = 8.0 c'est pour Excel97, 9.0 c'est pour excel2000 et/ou excel2002, 10.0 c'est pour excel 2003.... et tout ça repose sur un fichier du genre Excelxx.olb qui doit se trouver dans le dossier d'install de l'office.
Cherche de ce côté là.

Loup Gris
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
16 mars 2005 à 07:02
ok merci , c tres sympa, je vais voir ca, pour le moment g trouvé ca:
XL5EN32.OLB
XL5FR32.OLB
MSWORD.OLB
MSOUTL.OLB

je te tiens au courant! mais ce sera pas avant la semaine prochaine!
encore merci et a bientot
0
Rejoignez-nous