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

VB 6 et antérieur Discussion :

Pb avec une proc VBA lancée depuis VB


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut Pb avec une proc VBA lancée depuis VB
    Bonjour,

    J'ai un problème avec une procédure excel que je lance à partir d'un code VB.

    Voici le schéma de mon code :

    J'extrais des données (code VB).
    J'ouvre un modèle Excel (à partir de VB).
    J'exporte mes données dans le modèle Excel (à partir de VB).
    Je lance une procédure VBA stockée dans le modèle Excel.

    Mon problème vient du fait que mon code ne fonctionne pas si je choisis de dissimuler Excel tant que tous les traitements ne sont pas terminés (alors qu'il fonctionne si je laisse l'affichage ...)

    Pour dissimuler Excel j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set AppXL = New Excel.Application
            AppXL.Workbooks.Open FileName:=CheminXLS & fichierXLS, UpdateLinks:=0
            AppXL.Visible False
    et à la fin du code VB j'utilise l'instruction :
    Merci de votre aide !!

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    J'ai découvert qu'une partie de mon problème venait de la copie de feuilles Excel dissimulées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("...").Copy After:=Sheets("...")
    J'ai donc choisi de rendre apparent le classeur pour cette opération. Pourtant même avec cette modification, le temps de traitement est beaucoup plus long que lorsque je lance ma procédure sans la dissimuler du tout.

    J'ai d'ailleurs constaté qu'elle monopolisait beaucoup moins de ressources systèmes lorsqu'elle était dissimulée => Est ce normal ou cela vient il d'une erreur de programmation ?

  3. #3
    Membre confirmé Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Par défaut
    je ne suis pas spécialiste avec la connexion Excel Vb mais j'ai du déjà en faire une pour un projet précédent et cela fonctionnait parfaitement avec mon classeur excel fermée : cependant, tu ne peux pas ouvrir cette feuille en même temps sauf en lecture seule.

    essaye de modifier ton code par 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
    'Une fois la librairie ajouté'
    Dim XlsApp As Excel.Application 'variable application excel'
    Dim XlsBook As Excel.WorkBook 'variable classeur excel'
    Dim XlsSheet As Excel.WorKSheet 'variable feuille excel'
     
    'ouverture de ta feuille'
    Set XlsApp = CreateObject("Excel.application") 'création d'un objet Excel'
    Set XlsBook = XlsApp.WorkBooks.Open('Chemin de classeur entre "" ')
    Set XlsSheet = XlsBook.Worksheets(1) 'Sélection de la première feuille'
    Set XlsApp.Activate 'on peut modifier'
     
    'fermeture'
    XlsApp.Quit
    Set XlsSheet= Nothing
    Set XlsBook = Nothing
    Set XlsApp= Nothing 'libération des variables'
    Bonne continuation

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    Merci de ta réponse mais ça ne résout malheureusement pas mon problème. Je pense que je vais finir par laisser l'application visible pendant le traitement en me contentant de figer l'affichage ...

  5. #5
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    Bonjour,
    j'ai deja appliquer ce que tu cherche a faire sans aucun souci:

    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
     
    'ouverture de l'application
    Set appexcel = CreateObject("excel.application")
    'ouverture du fichier"INDICATEUR"
    Set wrexcel = appexcel2.Workbooks.Open("C:\INDICATEURS
    .xls")
    'ouverture des feuilles
    Set wfexcel = wrexcel.Worksheets("données_production")
    Set waexcel = wrexcel.Worksheets("données_causes")
    Set wcexcel = wrexcel.Worksheets("données demerite")
    Set wdexcel = wrexcel.Worksheets("VUE_GLOBALE")
    appexcel.Visible = False
    ...
    'permet de lancer la macro du fichier indicateur permettant de reactualiser les graphique en fonction de la nouvelle plage
    With wrexcel
        .Application.Run "'C:\INDICATEURS.xls'!indicateur"
    End With
    ...
    wrexcel.Save
    wrexcel.Close       'fermeture du classeur excel
    appexcel.Quit      'fermeture de l'application excel
    'desallocation memoire
    Set wfexcel = Nothing
    Set waexcel = Nothing
    Set wcexcel = Nothing
    Set wdexcel = Nothing
    Set wrexcel = Nothing
    Set appexcel = Nothing
    j'espère t'avoir aider.

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    Pour finir j'ai choisi de réécrire mon code (je n'étais pas auteur de la première version ...) en respectant vos conseils et maintenant il marche.

    Merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/10/2007, 07h09
  2. Problème avec une instruction VBA
    Par Jpeg69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/05/2007, 12h58
  3. drag and drop d'une image d'une page web lancée depuis un webbroswer
    Par chrisledeveloppeur2 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 02/01/2007, 15h33
  4. Ouvrir un fichier avec une appli déjà lancée
    Par Cameleon45 dans le forum Langage
    Réponses: 5
    Dernier message: 04/01/2006, 17h42
  5. Connaître la taille d'un module avec une macro VBA ou autre
    Par beegees dans le forum Général VBA
    Réponses: 15
    Dernier message: 22/11/2005, 09h47

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