Erreur d'Exécution 9' : L'indice n'appartient pas à la selection
Résolu
Kayna.86
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
Kayna.86 Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Kayna.86 Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour à tous,
Je me permets de solliciter votre aide une fois de plus. J'ai migré sur Office 2010 au bureau et depuis j'ai un code vba sur une base de donnée access qui ne fonctionne plus alors que le code fonctionnait/fonctionne très bien sur la version 2007 d'Access (j'ai refais le test avec une collègue qui est toujours sur la version 2007).
Le code en question me permet de transférer le résultat d'une requête sur excel.
Le message d'erreur qui s'affiche est le suivant: "Erreur d'Exécution 9' : L'indice n'appartient pas à la selection "
Je précise que j'ai bien coché les références nécessaires, soit : Microsoft Excel (Office et Access) 14.0 Object Library & Microsoft DAO 3.6 Object. Et je répète, le code fonctionne très bien sur Access 2007. Il y a vraiment quelque chose qui m'échappe.
J'ai tenté plein de solutuions en vain. Voici mon code d'origine et c'est la ligne:
"Set XLWSht = XLCreateWkb.Worksheets("Sheets1")" qui génère l'erreur.
Quelqu'un a une idée?
Merci d'avance.
Bonjour à tous,
Je me permets de solliciter votre aide une fois de plus. J'ai migré sur Office 2010 au bureau et depuis j'ai un code vba sur une base de donnée access qui ne fonctionne plus alors que le code fonctionnait/fonctionne très bien sur la version 2007 d'Access (j'ai refais le test avec une collègue qui est toujours sur la version 2007).
Le code en question me permet de transférer le résultat d'une requête sur excel.
Le message d'erreur qui s'affiche est le suivant: "Erreur d'Exécution 9' : L'indice n'appartient pas à la selection "
Je précise que j'ai bien coché les références nécessaires, soit : Microsoft Excel (Office et Access) 14.0 Object Library & Microsoft DAO 3.6 Object. Et je répète, le code fonctionne très bien sur Access 2007. Il y a vraiment quelque chose qui m'échappe.
J'ai tenté plein de solutuions en vain. Voici mon code d'origine et c'est la ligne:
"Set XLWSht = XLCreateWkb.Worksheets("Sheets1")" qui génère l'erreur.
Public Function SendTQ2Excel(strQName As String, Optional strSheetName As String) Dim qdf As DAO.QueryDef Dim dbs As DAO.Database Dim rst As DAO.Recordset Dim fld As DAO.Field Dim XLWSht As Object Dim XlApp As Object Dim XLCreateWkb As Object Dim XLActiveWkb As Object Set dbs = CurrentDb() Set rst = dbs.OpenRecordset(strQName) Set XlApp = CreateObject("Excel.Application") Set XLCreateWkb = XlApp.Workbooks.Add Set XLWSht = XLCreateWkb.Worksheets("Sheet1") XLWSht.Activate XlApp.Visible = True
Quelqu'un a une idée?
Merci d'avance.
A voir également:
- Erreur d execution 9
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
3 réponses
Bonjour,
En recherchant dans le didacticiel de Access (F1) j'ai trouvé l'aide qui suit, si cela peut t'apporter quelque lumière?
"Si vous déclarez une variable d'objet avec la locution As Object, une variable contenant une référence à tout type objet est créée. Toutefois, l'accès à l'objet par l'intermédiaire de cette variable est effectué par une liaison tardive, c'est-à-dire que la liaison est créée lors de l'exécution de votre programme. Pour créer une variable objet qui entraîne une liaison précoce, c'est-à-dire une liaison au moment de la compilation du programme, déclarez la variable objet avec un identificateur de classe spécifique. Par exemple, vous pouvez déclarer et créer les références Microsoft Excel suivantes :
(Les guillemets sont de moi pour la citation)
En recherchant dans le didacticiel de Access (F1) j'ai trouvé l'aide qui suit, si cela peut t'apporter quelque lumière?
"Si vous déclarez une variable d'objet avec la locution As Object, une variable contenant une référence à tout type objet est créée. Toutefois, l'accès à l'objet par l'intermédiaire de cette variable est effectué par une liaison tardive, c'est-à-dire que la liaison est créée lors de l'exécution de votre programme. Pour créer une variable objet qui entraîne une liaison précoce, c'est-à-dire une liaison au moment de la compilation du programme, déclarez la variable objet avec un identificateur de classe spécifique. Par exemple, vous pouvez déclarer et créer les références Microsoft Excel suivantes :
Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.WorkSheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1)"
(Les guillemets sont de moi pour la citation)
Salut Blux,
Merci de ta réponse. Malheureusement le "sheet1.xls' ne fonctionne pas non plus.
J'avais pensé au "docmd.transferspreadsheet...", mais l'inconvénient c'est qu'il faut définir le dossier qui contiendra le fichier, ainsi que le nom du fichier à l'avance.
Or je veux laisser aux différents utilisateurs de la base de données la liberté de choisir l'emplacement du fichier et le nom du fichier.
Merci de ta réponse. Malheureusement le "sheet1.xls' ne fonctionne pas non plus.
J'avais pensé au "docmd.transferspreadsheet...", mais l'inconvénient c'est qu'il faut définir le dossier qui contiendra le fichier, ainsi que le nom du fichier à l'avance.
Or je veux laisser aux différents utilisateurs de la base de données la liberté de choisir l'emplacement du fichier et le nom du fichier.
Merci beaucoup pour la réponse ! Ca marche nickel! :)
Bonne journée