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

Access Discussion :

Fermer une application Excel [AC-2003]


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut Fermer une application Excel
    Bonjour,

    J'ai créer une procédure dans un module standard qui:
    1. ouvre un fichier excel et chaque ligne
    2. enregistre chacune des lignes dans une table de ma base de données distantes
    3.ferme enfin le fichier excel


    Voici le code:

    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
    Public Sub PiloterExcelDepuisAccess(fileexcel As String)
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim nbrelignes As Long
        Dim nbrecolonnes As Long
        Dim i As Long
        Dim j As Long
    
        'J'initialise mes variables
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open(fileexcel)
    
    'je récupère le nombre de lignes du fichier Excel
    nbrelignes = ActiveSheet.UsedRange.Rows.Count
    nbrecolonnes = ActiveSheet.UsedRange.Columns.Count
    
        'référence à la requête
        Set qdf = CurrentDb.QueryDefs("RQTLECTUREFICHIEREXCEL")
    
        For i = 2 To 3 'nbrelignes
            InitialiserVariables
            For j = 1 To nbrecolonnes
                'traitement
            Next
            'enregistrement dans la base de donnees
            qdf.Parameters("param1") = valeur1
            qdf.Parameters("param2") = valeur2
            qdf.Parameters("param3") = valeur3
            qdf.Execute                                 '<== si requête action
        Next
    
        'libération de la référence
        Set qdf = Nothing
    
        'Code de fermeture
        xlBook.Close SaveChanges:=False
        
        xlApp.Application.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
    
    End Sub
    Mon soucis, lorsque je ferme le fichier excel, il ne le ferme pas complètement. Et je me retrouve donc avec une instance de Excel (visible dans le GESTIONNAIRE DES TACHES WINDOWS) cachée. Lorsque je veux à nouveau lire les données, j'ai une erreur parce que le fichier est occupé ou pas bien fermé.

    Comment faire pour fermer complètement l'application Excel?

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    et avec
    tout simplement

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut
    Finalement, j'ai vu d'où provient l'erreur mais je n'arrive pas à la résoudre. C'est la portion du code en rouge

    J'ai l'erreur suivante:
    Erreur d'exécution '91': Variable objet ou variable de bloc with non définie

    J'ai essayé de mettre un bloque WITH ACTIVESHEET j'ai toujours la même erreur comme si le Activesheet n'existait pas.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 064
    Points : 24 673
    Points
    24 673
    Par défaut
    Bonjour,

    Tu ouvre un objet WorkSheet mais tu ne l'utilise pas...
    Es-tu certain que le ActiveSheet soit valide ?

    Il te faudrait mettre un point d'arrêt et vérifier le nom par exemple.

    cordialement,

  5. #5
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nbrelignes = xlBook.ActiveSheet.UsedRange.Rows.Count
    nbrecolonnes = xlBook.ActiveSheet.UsedRange.Columns.Count
    en précisant le classeur ?

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut
    Merci HELAS,

    effectivement j'ai utilisé des références complètes : xlApp.Workbooks(1).Sheets(1).Cells(1, j).Value au lieu de Cell(1, j).Value.

    J'ai modifié tout mon code et levé toutes ambiguïtés au niveau du code. Et tout fonctionne correctement.

    Merci encore à tous!

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

Discussions similaires

  1. Fermer une application Windows
    Par telecnop dans le forum Langage
    Réponses: 20
    Dernier message: 28/06/2006, 21h15
  2. Fermer une application externe
    Par jean tof dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/05/2006, 16h18
  3. Fermer une application exterieure
    Par P.B dans le forum Windows
    Réponses: 4
    Dernier message: 01/12/2005, 15h17
  4. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32
  5. Fermer une application à l'aide de OnIdle
    Par Thierry Rapp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2002, 12h44

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