Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Vous ne pouvez pas modifier, ajouter ni supprimer des données dans des tables liées à un classeur Excel dans Office Access 2007, Office Access 2003 ou Access 2002

Le support d'Office 2003 a pris fin

Microsoft a mis fin au support d'Office 2003 le 8 avril 2014. Cette modification a affecté vos mises à jour logicielles et options de sécurité. Découvrez les implications de ce changement à votre niveau et la marche à suivre pour rester protégé.

Symptômes
Dans Microsoft Office Access 2007, Microsoft Office Access 2003 ou Microsoft Access 2002, vous ne pouvez pas modifier, ajouter ni supprimer des données dans des tables liées à un classeur Microsoft Excel.

De plus, vous pouvez rencontrer ce problème lorsque l'une des conditions suivantes est remplie :
  • Vous créez une requête pour récupérer des données de tables liées à un classeur Excel.
  • Vous créez un formulaire qui accède à des données de tables liées à un classeur Excel.
  • Vous utilisez DAO ou ADO pour mettre à jour par programmation des tables liées à un classeur Excel.
Vous recevez le message d'erreur suivant lorsque vous exécutez une requête pour mettre à jour des enregistrements dans un classeur Excel lié :
L'opération doit utiliser une requête qui peut être mise à jour.
Vous recevez le message suivant lorsque vous utilisez DAO pour mettre à jour par programmation des tables liées à un classeur Excel :
Erreur d'exécution '3027' Mise à jour impossible. La base de données ou l'objet est en lecture seule.
Lorsque vous essayez de mettre à jour les données liées dans ADO, le message est le même, mais le numéro d'erreur peut être semblable au suivant :
-2147217911 (80040e09)
Lorsque vous exécutez une requête pour insérer des enregistrements dans un classeur Excel, vous recevez le message d'erreur suivant même si le classeur Excel n'est pas lié à une base de données Access :
L'opération doit utiliser une requête qui peut être mise à jour.
Cause
Ce comportement est normal et peut se produire lorsque l'une des conditions suivantes est remplie :
  • Vous utilisez Office Access 2007.
  • Vous avez installé Microsoft Office 2003 Service Pack 2 (SP2) ou une mise à jour pour Access 2003 publiée après Office 2003 SP2.

    Pour plus d'informations sur Microsoft Office 2003 Service Pack 2, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    887616 Description de Microsoft Office 2003 Service Pack 2
  • Vous avez installé la mise à jour pour Access 2002 (KB904018) datée du 18 octobre 2005.

    Pour plus d'informations sur la mise à jour pour Access 2002 (KB904018), cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    904018 Description de la mise à jour pour Access 2002 datée du 18 octobre 2005
  • Vous avez installé une application d'exécution Access qui inclut Microsoft Office 2003 Service Pack 2 (SP2), une mise à jour pour Access 2003 publiée après Office 2003 SP2 ou la mise à jour pour Access 2002 (KB904018) datée du 18 octobre 2005 ou version ultérieure.
    Pour plus d'informations sur la façon d'inclure des fichiers de mise à jour Office dans une application d'exécution Access, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    916176 L'Assistant utilise les fichiers d'exécution inclus dans la version commerciale d'Access lorsque vous créez un package d'installation pour une application dans Access 2003 ou Access 2002
Contournement
Pour contourner ce comportement normal, appliquez l'une des méthodes ci-dessous.

Méthode 1 : Utilisation de Microsoft Excel

Ouvrez le classeur Excel lié dans Microsoft Excel et apportez-y les modifications souhaitées. Lorsque vous avez fini d'apporter des modifications, enregistrez-les, puis fermez le classeur.

Méthode 2 : Utilisation d'Office Access 2007, Access 2003 ou Access 2002

Importez le classeur Excel lié dans Microsoft Access, puis apportez les modifications souhaitées aux données. Lorsque vous avez fini d'apporter vos modifications, exportez vos données en tant que fichier Excel .xls.

Pour exporter la table d'Access à Excel, exécutez le code ci-dessous dans Access.
Public Sub WorkArounds()On Error GoTo Leave    Dim strSQL, SQL As String    Dim Db As ADODB.Connection    Set Db = New ADODB.Connection    Db.CursorLocation = adUseClient    Db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=<AccessPath>"    'Note: In Office Access 2007, use the following line of code:    'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=<AccessPath>"    SQL = "<MyQuery>"    CopyRecordSetToXL SQL, Db    Db.Close    MsgBox "Access has successfully exported the data to excel file.", vbInformation, "Export Successful."    Exit SubLeave:        MsgBox Err.Description, vbCritical, "Error"        Exit SubEnd SubPrivate Sub CopyRecordSetToXL(SQL As String, con As ADODB.Connection)    Dim rs As New ADODB.Recordset    Dim x    Dim i As Integer, y As Integer    Dim xlApp As Excel.Application    Dim xlwbBook As Excel.Workbook, xlwbAddin As Excel.Workbook    Dim xlwsSheet As Excel.Worksheet    Dim rnData As Excel.Range    Dim stFile As String, stAddin As String    Dim rng As Range    stFile = "<ExcelPath>"    'Instantiate a new session with the COM-Object Excel.exe.    Set xlApp = New Excel.Application    Set xlwbBook = xlApp.Workbooks.Open(stFile)    Set xlwsSheet = xlwbBook.Worksheets("<WorkSheets>")    xlwsSheet.Activate    'Getting the first cell to input the data.    xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select    y = xlApp.ActiveCell.Column - 1    xlApp.ActiveCell.Offset(1, -y).Select    x = xlwsSheet.Application.ActiveCell.Cells.Address    'Opening the recordset based on the SQL query and saving the data in the Excel worksheet.    rs.CursorLocation = adUseClient    If rs.State = adStateOpen Then        rs.Close    End If    rs.Open SQL, con    If rs.RecordCount > 0 Then        rs.MoveFirst        x = Replace(x, "$", "")        y = Mid(x, 2)        Set rng = xlwsSheet.Range(x)        xlwsSheet.Range(x).CopyFromRecordset rs    End If    xlwbBook.Close True    xlApp.Quit    Set xlwsSheet = Nothing    Set xlwbBook = Nothing    Set xlApp = NothingEnd Sub
Remarque Dans cet exemple de code, remplacez les espaces réservés suivants :
  • <AccessPath>
  • <ExcelPath>
  • <MyQuery>
    <MyQuery> correspond à la requête exécutée sur les tables dans la base de données Access. Le résultat de la requête est exporté vers le classeur Excel.
  • <WorkSheets>
    <WorkSheets> représente la feuille de calcul Excel vers laquelle vous souhaitez exporter le résultat.
Pour exécuter cet exemple de code, appuyez sur CTRL+G pour ouvrir la fenêtre Exécution, tapez WorkArounds, puis appuyez sur ENTRÉE.
Plus d'informations
Pour des raisons juridiques, Microsoft a désactivé la fonctionnalité d'Access 2003 et Access 2002 qui permet aux utilisateurs de modifier les données de tables liées pointant vers une plage d'un classeur Excel. Toutefois, lorsque vous apportez directement des modifications dans le classeur Excel, celles-ci apparaissent dans la table liée dans Access.
edit access2003 access2k3 acc2003 acc2k3 access2002 access2k2 accessxp acc2002 acc2k2 accxp excel2003 excel2k3 xl2003 xl2k3 excel2002 excel2k2 excelxp xl2002 xl2k2 xlxp excel2000 excel2k xl2000 xl2k
Propriétés

ID d'article : 904953 - Dernière mise à jour : 03/23/2007 19:35:06 - Révision : 6.2

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002, Microsoft Office Excel 2003, Microsoft Excel 2002, Microsoft Excel 2000 Standard, Microsoft Access 2002 Runtime, Microsoft Office Access 2003 Runtime

  • kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953
Commentaires