Problème lecture fichier excel

Résolu
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014 - 8 juil. 2014 à 17:07
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014 - 9 juil. 2014 à 10:05
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
8 juil. 2014 à 17:19
Tu as essayé de mettre un autre chemin pour ton fichier ?
par exemple : c:\tmp\monfichier.xls
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
Modifié par Whismeril le 8/07/2014 à 17:55
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.
0
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014
8 juil. 2014 à 19:10
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)
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
Modifié par Whismeril le 8/07/2014 à 19:40
        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.
0

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

Posez votre question
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014
Modifié par Scrapel le 9/07/2014 à 01:11
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 ...
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
9 juil. 2014 à 08:07
Même chose, il faut mettre la ligne xls.quit, avant celle set xls = nothing....
0
Scrapel Messages postés 32 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 18 novembre 2014
9 juil. 2014 à 10:05
Ah oui bien sûr. Merci !! Résolu
0
Rejoignez-nous