Problème lecture fichier excel [Résolu]

Signaler
Messages postés
32
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
18 novembre 2014
-
Scrapel
Messages postés
32
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
18 novembre 2014
-
Bonjour,
J'ai un problème pour ouvrir un fichier excel. Le but est de lire les valeurs de la première colone d'excel et de les afficher dans une liste déroulante. Voici le code :
*** Affiche les caractéristiques de lignes sauvegardées dans le combobox du mode automatique à partir d'un fichier excel
'Déclaration des variables
Dim xls As Excel.Application 'Application Excel
Dim xlsfeuille As Excel.Workbook 'Classeur Excel
Dim xlsclasseur As Excel.Worksheet 'Feuille Excel


'Ouverture de l'application
Set xls = CreateObject("Excel.Application")
'Ouverture du classeur
Set xlsclasseur = xls.Workbooks.Open("C:\Users\...\Desktop\test1.xls")
'Ouverture de la feuille, on prend la 1ere feuille comme feuille de travail
Set xlsfeuille = xls.Worksheets(1)

'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 (Sheets(1).Cells(i, 1).value <> " ")
Combo_Choix_Ligne.AddItem xlsfeuille.Cells(i, 1).value
i = i + 1
Loop
If Combo_Choix_Ligne.ListIndex < 0 Then Combo_Choix_Ligne.ListIndex = 0


'Fermeture du classeur excel
'xlsclasseur.close()</souligne></souligne>
'Désallocation mémoire
Set xlsfeuille = Nothing
Set xlsclasseur = Nothing
Set xls = Nothing
'Fermeture de l'application Excel
xls.Quit

Le problème est que quand je compile, l'application se lance mais quand j'essaie d'afficher la liste déroulante, une erreur survient ;
Run-time error '13'
Type Dismatch
Et il surligne la ligne suivante ;
Set xlsclasseur = xls.Workbooks.Open("C:\Users\...\Desktop\test1.xls")
(Le fichier existe bien par ailleurs et s'intitule Test1.xls) (j'ai aussi essayé avec .xlsx et même problème)

Je ne comprends pas , merci de votre aide :)

7 réponses

Messages postés
27968
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 mars 2020
325
Tu as essayé de mettre un autre chemin pour ton fichier ?
par exemple : c:\tmp\monfichier.xls
Messages postés
14412
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2020
365
Attention aux majuscules
Le fichier existe bien par ailleurs et s'intitule Test1.xls)


Set xlsclasseur = xls.Workbooks.Open("C:\Users\...\Desktop\test1.xls")


Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue.
Messages postés
32
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
18 novembre 2014

Merci pour vos réponses mais malgré ces changements, cela ne marche pas. J'ai corrigé les majuscules et j'ai changé le chemin d'accès.
Set xlsclasseur = xls.Workbooks.Open("C:\Temp\Test1.xls")
Toujours le même message d'erreur...

J'ai remarqué quelque chose d'autre, peut-être intéressant. Dans les processus, EXCEL.EXE est ouvert et ne se ferme pas (au passage j'aimerais savoir pourquoi et comment l'éviter !). Donc l'instruction précédente fonctionne bien. Et quand j'essaye de déplacer le fichier excel alors que le processus tourne toujours, windows me dit qu'il est impossible de déplacer le fichier car il est ouvert (et une fois que j'arrête le processus, je peux à nouveau déplacer le fichier excel)
Messages postés
14412
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2020
365
        Dim xlsfeuille As Excel.Workbook     'Classeur Excel
        Dim xlsclasseur As Excel.Worksheet    'Feuille Excel

ici tu inverses les variable, xlsfeuille est déclaré comme un classe et vis et versa.

donc forcément là
Set xlsclasseur = xls.Workbooks.Open("C:\Temp\Test1.xls")

tu essayes de rentrer un classeur dans une variable feuille, ça veut pas.

Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue.
Messages postés
32
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
18 novembre 2014

Ah oui désolé de ma bêtise ... J'aurai du voir ça. Merci

Mais j'ai toujours un problème pour la fermeture d'excel !


En rajoutant la ligne commentée suivante (j'ai enlevée l'apostrophe pour l'activer) :
xlsclasseur.close
(edit : j'ai enlevé les parenthèses, sinon ça ne marche pas)
J'ai un pb : Run-time error '91' Object variable or With block variable not set
et il surligne la dernière ligne :
xls.Quit

Pourtant en regardant sur des tuto, je crois qu'ils mettaient ça ...
Messages postés
14412
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2020
365
Même chose, il faut mettre la ligne xls.quit, avant celle set xls = nothing....
Messages postés
32
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
18 novembre 2014

Ah oui bien sûr. Merci !! Résolu