IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Erreur d'exécution lors du deuxième lancement [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Points : 50
    Points
    50
    Par défaut Erreur d'exécution lors du deuxième lancement
    Bonjour à tous,

    J'ai un petit souci au niveau de mon code VBA Access.

    Je suis en train de créer une petite application ACCESS permettant d'importer un fichier excel.
    L'application créera à la voler une table, y mettra les informations du fichier excel, puis ces informations seront ensuite ajoutées à différentes tables déjà existantes.
    La nouvelle table créée sera pas la suite supprimée.

    Mon code n'est absolument pas terminé, je suis en train de tester ce que j'ai fait pour m'assurer que tout fonctionne et comme ce n'est pas le cas, je viens vous solliciter.

    Lorsque j'exécute mon code une première fois tout se fait bien, tout marche comme je le souhaite.

    Par contre, lors du deuxième lancement (en sélectionnant le même classeur excel), j'ai le message d'erreur suivant qui intervient au niveau de la ligne en en rouge ci-dessous :

    Erreur d'exécution '1004': La méthode 'Range' de l'objet '_Global' a échoué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Private Sub cmd_Import_Click()
    
    '-------------------------------    Déclaration des variables   --------------------------------------
    Dim fso_FileDiag As Office.FileDialog
    Dim fso_SelectedFile As Office.FileDialogSelectedItems
    Dim db As Database
    Dim str_Sql As String
    Dim App_Xls As Excel.Application
    Dim wb_Import As Excel.Workbook
    Dim str_WbPath As String
    Dim tbl_Plage
    Dim oCell
    Dim fld_TempTable As String
    
    '-------------------------------    Initialisation des variables   --------------------------------------
    fld_TempTable = ""
    Set db = Application.CurrentDb
    Set fso_FileDiag = Application.FileDialog(msoFileDialogOpen)
    
    'Réglage pour l'ouverture de la boite de dial pour sélection d'un classeur
        With fso_FileDiag
            .InitialFileName = Application.CurrentProject.Path
            .Filters.Clear
            .Filters.Add "Excel", "*.xlsx"
            .Filters.Add "Excel", "*.xlsm"
            .AllowMultiSelect = False
            .Show
        End With
         
    Set fso_SelectedFile = fso_FileDiag.SelectedItems
    
    'On vérifie qu'on a bien sélectionné un classeur
        If fso_SelectedFile.Count = 0 Then
            MsgBox "Vous n'avez pas sélectionné de classeur Excel à importer." & vbLf & "Veuillez recommencer et bien sélectionner un classeur à importer.", _
                                    vbOKOnly + vbCritical, "Erreur :"
        
        End If
    
    'Initialisation des variables pour l'application Excel et le classeur qu'on aura sélectionné
    Set App_Xls = CreateObject("Excel.Application")
    Set wb_Import = App_Xls.Workbooks.Open(fso_SelectedFile.Item(1))
    
        App_Xls.Visible = True
    
    Set tbl_Plage = wb_Import.Sheets("IMPORT").Range("A1", Range("A1").End(xlToRight))
    
    'On récupère le nom des champs pour la création de la table
        For Each oCell In tbl_Plage
            fld_TempTable = fld_TempTable & oCell.Value & " Char(50), "
        Next oCell
        
    'On retravaille la variable avec tous les champs pour supprimer ", " en trop
        fld_TempTable = Mid(fld_TempTable, 1, Len(fld_TempTable) - 2)
    
    'On créé la requête sql
        str_Sql = "CREATE TABLE tbl_TampTable (" & fld_TempTable & ")"
    
    'On exe la requête
        db.Execute str_Sql
        
        'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_TampTable", fso_SelectedFile.Item(1), True
        
        'DoCmd.RunSQL "DROP TABLE tbl_TampTable"
        
        wb_Import.Close False
        App_Xls.Quit
        Set tbl_Plage = Nothing
        Set wb_Import = Nothing
        Set App_Xls = Nothing
        Set fso_SelectedFile = Nothing
        Set fso_FileDiag = Nothing
    
    End Sub
    Je pensais avoir bien fermé mes objets comme le conseil tee_grandbois ici.

    Du coup je n'arrive pas à comprendre pourquoi au deuxième lancement ça me renvoie ce message d'erreur.

    Si je n'ai pas été assez clair ou si vous avez besoin de plus d'information n'hésitez pas à me le dire

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Salut,

    ton objet Range() n'est pas rattaché à une feuille ni à un classeur, aussi il faut corriger ton code de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tbl_Plage = wb_Import.Sheets("IMPORT").Range("A1", Range("A1").End(xlToRight))
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tbl_Plage = wb_Import.Sheets("IMPORT").Range("A1", wb_Import.Sheets("IMPORT").Range("A1").End(xlToRight))
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    Un grand merci Jean-Philippe !!

    J'aurais dû le voir...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] "Erreur d'exécution 462" à la deuxième application d'une macro
    Par Lexie91 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/12/2015, 15h18
  2. Erreur à l'exécution lors de la creation d'une fenetre
    Par jmc18100 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 04/06/2015, 15h18
  3. Réponses: 1
    Dernier message: 14/05/2012, 17h48
  4. [AC-2007] Erreur d'exécution lors de l'execution d'un programme access
    Par Kisty10 dans le forum Runtime
    Réponses: 2
    Dernier message: 06/12/2010, 19h06
  5. Bug lors du deuxième lancement de la macro
    Par charlie.92.77 dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/02/2009, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo