none
L'opération doit utiliser une requête qui peut être mise à jour : erreur 3073 RRS feed

  • Question

  • Bonjour pour ce petit code j ai une erreur qui apparaît et je ne vois comment faire pour y remédier?

    "L'opération doit utiliser une requête qui peut être mise à jour"

    erreur 3073

    l'erreur apparaît au niveau de DoCmd

    Public Sub import()
    Dim Chemin                                             As String
    Dim NameList()
        wkbookpath = Chemin
        Dim XL                                             As Object
        Set XL = CreateObject("Excel.Application")
        With XL
            .Visible = False
            .displayalerts = False
            .Workbooks.Open wkbookpath
            For Each ws In XL.Worksheets
                ReDim Preserve NameList(Counter)
                NameList(Counter) = ws.Name
                Counter = Counter + 1
            Next
            .ActiveWorkbook.Close (True)
            .Quit
        End With
    
        Set XL = Nothing
    
        For I = LBound(NameList()) To UBound(NameList())
            DoCmd.TransferSpreadsheet acImport, , NameList(I), wkbookpath, True, NameList(I) & "!A1:IU9999"
        Next I
    End Sub

    « Merci »


    • Modifié ArgyronetModerator mardi 11 décembre 2018 14:21 Balise code + titre précis + merci
    vendredi 12 octobre 2018 13:12

Toutes les réponses

  • Bonjour,

    erreur 3073

    Voilà la clef de recherche : c'est fréquent qu'on trouve plus d'infos en cherchant le numéro d'erreur que son intitulé.

    En ne regardant que là :

    https://stackoverflow.com/questions/170578/operation-must-use-an-updatable-query-error-3073-microsoft-access

    J'ai appris que le problème se pose souvent avec des requêtes de jointure qui ont des clauses AVG(), SUM() ..., que des gens ont contourné le problème en utilisant DLookup à la place de WHERE, que parfois le problème se pose à cause d'une question de droits (par exemple, la base se trouve dans un répertoire où l'utilisateur n'a pas de droits d'écriture), et surtout qu'il s'agit d'un bug connu, qui pourrait bien être résolu par une mise à jour.

    D'ailleurs, en lisant ça je me rappelle que j'ai eu ce problème il y a un peu plus de 15 ans, qu'il avait fallu mettre à jour le moteur Jet. Partant de là il y a plusieurs hypothèses, soit la version qui m'avait posé problème a refait surface pour une raison que je ne me hasarderai pas à chercher à expliquer, soit une autre mise à jour a été faite depuis mais en n'ayant pas suffisamment bien tiré les leçons de l'erreur passée.

    De loin, je n'ai pas lu toutes les réponses. Il se pourrait bien que l'une d'elles signale une mise à jour. J'ai cherché sur Startpage, qui utilise le moteur Google. Peut-être Bing vaudrait le coup, puisque c'est le moteur de Microsoft. Ou une recherche directement sur les serveurs de Microsoft ?

    samedi 13 octobre 2018 00:35
  • Bonjour,

    1/ Votre variable chemin ne spécifie aucun nom de classeur valide...

    2/ la variable Counter doit être initialisée avant le tableau sinon elle vaut 0 et ça plante la boucle (erreur 9).

    3/ pourquoi un :

      .ActiveWorkbook.Close (True)

    alors que le but est de lister les feuilles du classeur ; une ouverture en lecture seule suffit.

    Bref une révision ou une adaptation doit être faite si vous voulez que cette procédure fonctionne.


    Argy

    mardi 11 décembre 2018 14:19
    Modérateur