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 :

génération d'un xls dans une macro [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é
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Par défaut génération d'un xls dans une macro
    Bonjour tout le monde !

    J'essaie de générer un fichier resultat.xls à partir d'une macro située dans genere.xls.

    Alors voilà le code que j'ai trouvé :

    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
    Private Sub Command1_Click()
    Dim xlApp As New Excel.Application
    Dim xlBook As Workbook
    Dim NomFichier As String
     
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
     
    '.... ici on rajoute du code...
     
    NomFichier = "D:\DONNEES\Commun\Calculateur\resultat.xls"
    xlBook.SaveAs NomFichier 
    xlBook.Close
    xlApp.Quit
     
    Set xlBook = Nothing 
    Set xlApp = Nothing
    End Sub

    Lorsqu'on est dans le Visual Basic Editor, et qu'on execute la macro, resultat.xls se génère bien, par contre quand on ferme tout et qu'on lance genere.xls, on obtiens rien.

    Le but étant qu'une execution de genere.xls créé résultat.xls (sans l'ouvrir)

    A votre avis, que manque-t-il dans ma macro ??

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je n'ai pas compris ton problème.
    En plus le sens de
    Le but étant qu'une execution de genere.xls créé résultat.xls (sans l'ouvrir)
    m'échappe totalement.

    Deux remarques quand même :
    tu crées une nouvelle application Excel. Cela n'est pas utile, tu peux utiliser l'application du classeur "génère.xls". Cela peut même être très gênant si tu dois faire des copies de "génère" vers "resultats".
    Si ton classeur "résultats" a toujurs le même chemin et le même nom, tu ne pourras le créer qu'une fois.

    Cordialement,

    PGZ

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Voici quelques précisions car mon histoire n'est pas claire :

    j'ai déjà créé la macro (elle est assez lourde, appelle une base oracle, etc) qui met à jour le fichier résultat.xls, mais cette macro est située dans le fichier résultat.xls.
    Donc dès qu'on veut ouvrir resultat.xls, on est obligé de déclencher cette macro. Or j'aimerais que la macro soit situé dans un autre fichier appelé genere.xsl, afin qu'on puisse utiliser resultat.xls, sans regénérer le fichier à chaque fois qu'on l'ouvre.

    Est-ce que tu vois mieux ce que je veux dire ?

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,
    Citation Envoyé par ajor Voir le message
    Voici quelques précisions car mon histoire n'est pas claire :
    Bon début...

    Citation Envoyé par ajor Voir le message
    j'ai déjà créé la macro (elle est assez lourde, appelle une base oracle, etc) qui met à jour le fichier résultat.xls, mais cette macro est située dans le fichier résultat.xls.
    Donc dès qu'on veut ouvrir resultat.xls, on est obligé de déclencher cette macro.
    Je ne vois pas pourquoi. Ce n'est pas parce qu'un classeur contient une macro qu'on est obligé de l'exécuter dès qu'on ouvre ce classeur.
    Citation Envoyé par ajor Voir le message
    Est-ce que tu vois mieux ce que je veux dire ?
    Du coup, je ne vois pas le problème.

    Si tu tiens à diffuser le classeur Resultat sans la macro de mise à jour, tu peux toujours mettre dans Resultat une autre macro qui crée un claseur en copiant les feuilles et pas le code.

    Cordialement,

    PGZ

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Par défaut
    Le truc c'est que mon fichier resultat.xls sera régénéré automatiquement une fois par jour sur un serveur puis copié sur des postes clients, qui eux devront pouvoir l'ouvrir sans problème.

    Dans ce cas, comment dois-je faire à ton avis ?

  6. #6
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    si j'ai bien compris

    tu dois mettre ton code dans l'événement OPEN du workbook genere.xls
    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
    Private Sub Workbook_Open()
    Dim xlApp As New Excel.Application
    Dim xlBook As Workbook
    Dim NomFichier As String
     
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
     
    '.... ici on rajoute du code...
     
    NomFichier = "D:\DONNEES\Commun\Calculateur\resultat.xls"
    xlBook.SaveAs NomFichier 
    xlBook.Close
    xlApp.Quit
     
    Set xlBook = Nothing 
    Set xlApp = Nothing
    End Sub

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

Discussions similaires

  1. Code asm dans une macro C
    Par progfou dans le forum C
    Réponses: 11
    Dernier message: 01/03/2006, 18h50
  2. Comment insérer une macro excel dans une macro word?
    Par max2245 dans le forum VBA Word
    Réponses: 15
    Dernier message: 07/01/2006, 17h44
  3. Copie de fichiers XLS dans une table
    Par sebvita dans le forum Oracle
    Réponses: 3
    Dernier message: 28/12/2005, 09h13
  4. Recuperer un classeur xls dans une zone de liste
    Par uloaccess dans le forum Access
    Réponses: 3
    Dernier message: 11/11/2005, 14h58
  5. pb dans une macro excel VB
    Par syl221 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/10/2005, 17h29

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