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

Macros et VBA Excel Discussion :

Fermer application Excel [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut Fermer 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
    45
    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)
    
        'référence à la requête
        Set qdf = CurrentDb.QueryDefs("RQTLECTUREFICHIEREXCEL")
    
        'je récupère le nombre de lignes du fichier Excel
        nbrelignes = ActiveSheet.UsedRange.Rows.Count
        nbrecolonnes = ActiveSheet.UsedRange.Columns.Count
    
        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 confirmé Avatar de scully2501
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Par défaut
    En cherchant sur Google:

    Essai d'inverser:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    xlApp.Application.Quit
     
    'Code de fermeture
    xlBook.Close SaveChanges:=False
    Et pense à utiliser la balise CODE (image #)

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    je suis pas du tout certain mais est tu obligé de faire

    Edit : scully2501 répondu en même temps (presque)

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut
    En principe, pour fermer, j'utilise xlApp.Quit au lieu de xlApp.Application.Quit.
    Mais aucun des deux ne fonctionne.

    Bon, j'essaie d'inverser

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut
    Finalement, j'ai vu d'ou 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.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    Je ne sais pas si ça joue mais ce qui m'étonne c'est qu'il reste du code alors que la fermeture a été demandé avant, cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    Bon, je dis ça au hasard
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut
    Ben, j'ai trouvé des exemples semblables dans la faq d'Access que j'ai enregistré sur le disque local C:

    file:///C:/faqaccess/Office.html#Automationn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim xlApp As Object
        Dim mySheet As Object
     
        Set xlApp = CreateObject("Excel.Application")
        Set mySheet = xlApp.Workbooks.Open("D:\EXCEL\test.xls") ' Définit le fichier EXCEL à ouvrir
     
        ' endroit où mettre le code de pilotage
     
        ' Code de fermeture
        mySheet.Save
        mySheet.Close
        xlApp.Quit
        Set xlApp = Nothing
        Set mySheet = Nothing
    et

    file:///C:/faqaccess/Excel.html#PilotExcel
    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
    Private Sub DémoPilotageExcel()
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim i as long
        Dim vtemp As Variant   
     
        'J'initialise mes variables
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open("C:\Chemin\Feuille.xls")
     
        'Ajouter une feuille de calcul nommée Toto
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = "Toto"
     
        'Manipuler une cellule
        xlSheet.Cells(1, 1) = "je suis dans la ligne1 et colonne1"
     
        'Manipuler une plage
        xlSheet.Range("A2:D6").Value = "Zones A2:D6"
        'Remplie la colonne E de la ligne i avec le num de la ligne (i)
        For i = 2 To 6
            xlSheet.Cells(i, 5).Value = i
        Next
     
        'Permet de trier une plage
        xlSheet.Range("A2:E6").Sort xlSheet.Columns("E"), xlDescending
     
        'Trouver une valeur dans une plage
        vtemp = xlSheet.Range("A2:E6").Find("2").Row
     
        'Touver une valeur dans une colonne
        vtemp = xlSheet.Columns("E").Find("2").Row
     
        'Copier une plage vers une destination directement
        'xlBook.Worksheets("Feuil1").Range("A1:E3").Copy Destination:=xlBook.Worksheets _
    '("C:\Chemin\FeuilleDestination.xls").Range("A1:E3")
     
        'Copier une plage
        xlSheet.Range("A" & vtemp & ":E" & vtemp).Copy
     
        'Coller les valeurs
        xlSheet.Paste Destination:=xlSheet.Range("A8:E8")
     
        'Supprimer une plage
        'Si l'on supprime une ligne alors cela remonte les lignes
        'xlSheet.Range("A" & vtemp & ":E" & vtemp).Delete
     
        'Supprimer une ligne
        xlSheet.Rows(vtemp).Delete
     
        'insertion d'une ligne
        xlSheet.Range("A" & i & ":H" & i).EntireRow.Insert Shift:=xlShiftDown
     
        'Code de fermeture
        xlBook.Save
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
     
        MsgBox "Fin de la procédure. :)"
    End Sub

    Je n'ai fait qu'utiliser parce que je ne maîtrise pas vraiment ces aspects.

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

Discussions similaires

  1. Application Excel - Tuer le processus EXCEL.EXE?
    Par xVINCEx dans le forum VB.NET
    Réponses: 21
    Dernier message: 18/04/2012, 10h43
  2. [AC-2003] Fermer une application Excel
    Par flet le kid dans le forum Access
    Réponses: 5
    Dernier message: 27/04/2009, 10h16
  3. comment fermer l'application excel ?
    Par mohammed0585 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2008, 18h23
  4. [VBA EXCEL] Fermer l'application Excel
    Par scully2501 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/10/2007, 12h17
  5. VBA et application Excel
    Par BonyR dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/09/2005, 09h31

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