Lecture d'un classeur Excel : pb sur XP

Résolu
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014 - 30 juil. 2014 à 20:21
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014 - 31 juil. 2014 à 22:19
Bonjour,

Je suis débutant :) . Je développe un logiciel qui utilise un classeur Excel. Sur mon ordi, tout se passe nickel, je peux afficher les données présentes dans le classeur. J'ai alors créé un "package" d'installlation. Celui-ci s'installe nickel sur la plupart des ordi (sous Win7 et sous XP). Mais sur un ordinateur (sous XP), lorsque la procédure qui fait appel à Excel se lance, l'application quitte sans message d'erreur (or c'est précisément à cette machine que le logiciel est destiné :( ).

Remarques :
-Bien sûr excel est installé sur l'ordinateur qui pose pb. EXCEL.EXE est incluse dans le setup d'installation (il s'inclue automatiquement).
-L'installation se passe nickel mais (sur les deux XP uniquement : l'ordi où ça marche comme sur l'autre ordi où j'ai le problème) sauf à la fin où apparait le message suivant j'ai le message suivant : "le point d'entrée de procédure _except_handler4_common est introuvable dans la bibliothèque de liaisons dynamique msvcrt.dll"
-De plus lors de l'installation il y a aussi un problème avec itircl.dll : "An error occurred while registring the file 'C:\Windows\system32\itircl.dll" (idem, cette erreur n'arrive que sur les XP, sur celui qui marche comme sur celui où plante Excel)
-Dans le gestionnaire des tâches, le processus EXCEL.EXE tourne : l'ouverture de Excel a donc marché et pas la fermeture, ce qui porte à croire que le pb vient dans le code ci-après.

Voici l'extrait du code où arrive le problème
(ce code sert à afficher dans une combobox, les noms des éléments de la première colonne à partir de la deuxième ligne) :


If Dir(path) <> "" Then
Dim xls As Excel.Application 'Application Excel
Dim xlsclasseur As Excel.Workbook 'Classeur Excel
Dim xlsfeuille As Excel.Worksheet 'Feuille Excel
Set xls = CreateObject("Excel.Application") 'Ouverture de l'application
Set xlsclasseur = xls.Workbooks.Open(path) 'Ouverture du classeur
Set xlsfeuille = xls.Worksheets(1) 'Ouverture de la feuille, on prend la 1ere feuille comme feuille de travail

Do While Combo_Choix_Ligne.ListCount > 0
Combo_Choix_Ligne.RemoveItem (0)
Loop
'Lecture des données de la première colonne et ajout des éléments de la combobox du choix de ligne
Dim i As Long
Dim test As Boolean
i = 2
Do While (xlsfeuille.Cells(i, 1).value <> "")
Combo_Choix_Ligne.AddItem xlsfeuille.Cells(i, 1).value
i = i + 1
If Combo_Choix_Ligne.ListIndex < 0 Then Combo_Choix_Ligne.ListIndex = 0
Loop

xlsclasseur.Close 'Fermeture du classeur excel
xls.Quit 'Fermeture du classeur excel
Set xlsfeuille = Nothing 'Désallocation mémoire
Set xlsclasseur = Nothing 'Désallocation mémoire
Set xls = Nothing 'Désallocation mémoire
Else ....................... 'le else ne fait plus appel à Excel


Si quelqu'un a une piste je suis preneur, j'ai passé une bonne partie de l'aprem dessus, je sèche :( ...

Merci d'avance

2 réponses

Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014
31 juil. 2014 à 08:36
Avec des msgBox partout, j'ai résussi à voir que l'erreur provient de la ligne suivante : est-ce que quelqu'un voit ce qui pourrait poser problème ????????
Set xlsclasseur = xls.Workbooks.Open(path)
0
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014
31 juil. 2014 à 22:19
C'est un problème de version. Compilé en Excel 2007, il ne marche pas sur Excel 2000. Pour résoudre le pb, il faut utiliser le late-binding...
0
Rejoignez-nous