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 :

Performance, ouverture de fichier [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Par défaut
    Bonjour,

    Question 1 :

    Je travaille actuellement sur une application qui doit ouvrir plusieurs fichiers office (Word mais je pense que cela importe peu) et qui complète des données à l'intérieur de ceux ci.
    Je dois ouvrir en moyenne un dizaine de fichier Word dans mon traitement or mon temps de traitement de mes macros est inférieur à 1s par contre le temps d'ouverture / fermeture de mes fichiers peut prendre 1-3 minutes.
    Actuellement mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       Dim WDApp As Word.Application
                Dim WDDoc As Word.Document
                Set WDApp = CreateObject("Word.Application")
                WDApp.Documents.Open("fichier")
                'TRAITEMENT
                WDDoc.Close
    Est ce que passer par des FSO augmente le temps de traitement des ouvertures/fermeture
    Ou, est ce que le fait de garder WordApp ouvert me permettrait de gagner du temps?

    Question 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Set WDDoc = Nothing
        Set WDApp = Nothing
    Je sais que ceci est possible, mais je me rends pas compte des implications qui seront générées à partir de ce code.
    Dois-je l'utiliser en // de WDdoc.close,WdApp.close si oui comment et à quoi cela vas il me servir?
    Ou peut il remplacer WDdoc.close,WdApp.close avec une utilisation "seul" ou précédé de wdapp.save, wdapp.save

    Voilà le code que j'ai :

    Je met 1'26'' pour parcourir mes 16 fichiers
    Voici mon code :

    'Création de la structure du document word
    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
     
        timer1 = Time
        For i = 1 To k
            structure(i) = "Chemin d'accés" & listeClient(i)
            fichier = Dir(structure(i) & "\*.doc")
            Do While fichier <> ""
                j = j + 1
                ouvertureFichier(j) = structure(i) & "\" & fichier
                Dim WDApp As Word.Application
                Dim WDDoc As Word.Document
                Set WDApp = CreateObject("Word.Application")
                WDApp.Documents.Open (ouvertureFichier(j))
                WDApp.ActiveDocument.Bookmarks("signet1").Range.Text = "Petit    test Dans tous les documents"
                WDApp.ActiveDocument.Save
                WDApp.ActiveDocument.Close
                WDApp.Quit
                Set WDApp = Nothing
            fichier = Dir
            Loop
        Next i
        timer2 = Time
        timer = timer2 - timer1
        MsgBox timer

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,peut-être des lenteurs si en réseau, ou si anti-virus style Norton ou autre qui s'active à chaque ouverture de document ou les 2 ?

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaie de travailler avec une unique instance Word.
    Ensuite déclare convenablement toutes tes variables.

    Testes ceci
    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
    Dim Fichier As String
    Dim WDApp As New Word.Application
    Dim WDDoc As Word.Document
    Dim i As Integer, j As Integer, k As Integer
    Dim Timer1 As Long
     
    Timer1 = Timer
    With WDApp
        For i = 1 To k
            structure(i) = "Chemin d'accés" & listeClient(i)
            Fichier = Dir(structure(i) & "\*.doc")
            Do While Fichier <> ""
                j = j + 1
                ouvertureFichier(j) = structure(i) & "\" & Fichier
                .Documents.Open (ouvertureFichier(j))
                .ActiveDocument.Bookmarks("signet1").Range.Text = "Petit    test Dans tous les documents"
                .ActiveDocument.Close True
                Fichier = Dir
            Loop
        Next i
        .Quit
    End With
    Set WDApp = Nothing
    MsgBox Timer - Timer1

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Par défaut
    Merci pour vos réponse, je ne voyais pas comment travailler avec le fichier WordApp "ouvert". Cela va me permettre de gagner un peu de temps.

    Mes variables étaient déclarés. c'est juste que je ne voulais pas mettre tout le bloc qui est un peu long mais cibler la zone ouverture / Fermeture.

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

Discussions similaires

  1. ouverture de fichier txt
    Par juguul dans le forum MFC
    Réponses: 11
    Dernier message: 18/12/2003, 09h44
  2. Ouverture de fichier en api
    Par Michaël dans le forum Windows
    Réponses: 9
    Dernier message: 10/12/2003, 16h47
  3. Ouverture de fichier
    Par Ricou.13 dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/10/2003, 08h59
  4. Réponses: 2
    Dernier message: 26/02/2003, 15h18
  5. [VBA-E] Evenement ouverture de fichier
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2002, 09h42

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