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

WinDev Discussion :

Lancer une macro excel sans ouvrir excel [WD14]


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 95
    Points : 73
    Points
    73
    Par défaut Lancer une macro excel sans ouvrir excel
    Bonjour,

    suite à un export de table vers excel, je cherche à lancer une macro excel depuis windev sans ouvrir excel, voici mon 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
    Chemin est une chaîne
    Chemin = ("C:\TEMP\FUSION.XLS")
     
    // export table vers excel
    TableVersExcel(TABLE_CHAMPS_COURRIER,Chemin,taFusion)
     
    sNomClasseur est une chaîne
    sNomClasseur = "c:\temp\fusion.xls"
    sMacro est une chaîne
    sMacro = "depligne"
     
     
    // pilotage de Excel // executer une macro
    clgExcel est un objet CExcel()
     
    clgExcel:Ouvrir(sNomClasseur)
    clgExcel:m_xExcel>>Run (sMacro)
    donc, pour l'instant cela fonctionne parfaitement mais ... excel s'ouvre... je souhaiterais que cela soit transparent, que l'export de table se fasse, puis que la macro se lance sans que excel ne s'ouvre ou alors que excel s'ouvre et se ferme dans la foulée...

    Une idée ??

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour
    ...ou alors que excel s'ouvre et se ferme dans la foulée...
    en utilisant la méthode :Fermer() de la classe CExcel()

    ou >>ActiveWorkbook>>Close(Faux)

  3. #3
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Ouverture d'un fichier XLS
    IdFichierXLS = xlsOuvre("C:\MesRépertoires\Fichier.XLS")
    ...
    // Fermeture du fichier XLS
    xlsFerme(IdFichierXLS)
    Je me rappelle d'une ancienne propriété OLEVISIBLE pour qu'excel s'ouvre en background

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    De mémoire en manipulant l'objet OLE d'Excel, l'application n'est pas censée s'ouvrir ou alors je l'a rendait invisible.

    Y a une propriété visible, avec un peu de chance ça doit être : Excel>>Application>>visible = faux
    Dans ton cas clgExcel:m_xExcel>>visible = faux
    Mieux vaut un petit lien qu'un long discours.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 95
    Points : 73
    Points
    73
    Par défaut
    c'est presque bon, mais il me manque une donnée :

    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
    Chemin est une chaîne
    Chemin = ("C:\TEMP\FUSION.XLS")
     
    // export table vers excel
    TableVersExcel(TABLE_CHAMPS_COURRIER,Chemin,taFusion)
     
    sNomClasseur est une chaîne
    sNomClasseur = "c:\temp\fusion.xls"
    sMacro est une chaîne
    sMacro = "depligne"
     
     
    // pilotage de Excel // executer une macro
    clgExcel est un objet CExcel()
     
    clgExcel:Ouvrir(sNomClasseur)
    clgExcel:m_xExcel>>Run (sMacro)
     
    clgExcel:Enregistrer(sNomClasseur)
     
    // on ferme excel
    clgExcel:Quitter()
    ce code fonctionne mais excel me dit que le fichier existe déjà, et me demande de confirmer l'enregistrement avant de quitter, comment puis je dire à Windev de "supprimer" la confirmation d'enregistrement.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Je crois qu'après avoir enregistré ton classeur il faut le fermer.
    Il y a une méthode fermer à la classe.

    Mais bon attention quand même, si cette classe permet de manipuler globalement Excel, elle est très loin d'être exhaustive.
    Mieux vaut un petit lien qu'un long discours.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 95
    Points : 73
    Points
    73
    Par défaut
    Merci à tous, voici la solution que j'ai trouvée :

    j'ai refait ma macro excel en lui insérant "fichier, enregistrer" puis la notion de clgExcel:m_xExcel>>visible = Faux, et résultat :

    mon fichier excel s'ouvre en invisible, la macro s'execute en enregistrant le fichier au passage et excel se ferme.

    voici le code définitif :

    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
    Chemin est une chaîne
    Chemin = ("C:\TEMP\FUSION.XLS")
     
    // export table vers excel
    TableVersExcel(TABLE_CHAMPS_COURRIER,Chemin,taFusion)
     
    sNomClasseur est une chaîne
    sNomClasseur = "c:\temp\fusion.xls"
    sMacro est une chaîne
    sMacro = "macroligne"
     
    Ouvre("FEN_import donnees")
     
    // pilotage de Excel // executer une macro
    clgExcel est un objet CExcel()
     
    clgExcel:m_xExcel>>visible = Faux
    clgExcel:Ouvrir(sNomClasseur)
    clgExcel:m_xExcel>>Run (sMacro)
     
    // on ferme excel
    clgExcel:Quitter()
    Merci à tous !!

  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    ... la macro s'execute en enregistrant le fichier ...
    Tu peux aussi regarder le code de ta macro et faire l'équivalent à partir de Windev

    Ceci te permettrait de compléter cette classe en fonction de tes besoins

  9. #9
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Bonjour.
    Sauf nouveauté, Excel ne propose pas de runtime. En revanche il existe ça et la des activeX qui permetront de créer et manipuler les fichier Excel avec des possibilité interessantes sans disposer de la licence Excel sur le poste. Reste que ces composants sont payant et au final quelqu'un doit payer une licence.
    D'un autre coté, il est peu judicieux de créer des Xls sans avoir Excel à terme : autant créer des csv.

    recherche FormulaOne qui fut une piste en des temps anciens.

  10. #10
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Non je suis désolé, à ma connaissance Excel à besoin d'excel.
    Les macro que tu crée sous Excel ne sont utile qu'avec les feuilles et les infos présente dans tes feuilles excel.

    Si tu veux t'affranchir d'excel il va falloir que tu crée un logiciel à part entière avec Windev ou un autre logiciel de développement.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

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

Discussions similaires

  1. [AC-2010] VBA - sauvegarder une table ACCESS en format EXCEL sans ouvrir EXCEL
    Par LiseUEMPT dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2015, 16h23
  2. Lancer une macro excel sans ouvrir excel
    Par Invité(e) dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/08/2011, 13h26
  3. [XL-2003] Lancer une macro à l'ouverture d'Excel quel que soit le fichier
    Par EtyenH dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/05/2009, 08h50
  4. lancer une macro access à partir d'excel
    Par bybelos33 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/07/2007, 15h16
  5. Lancer une macro PPT à partir d'Excel
    Par Rabah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/10/2005, 17h23

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