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 :

Excel : lancer une application


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut Excel : lancer une application
    Bonjour,
    Je travaille sur un projet sous Excel et je souhaite lancer une application externe à partir de mon classeur Excel... Est-ce que l'un(e) d'entre-vous peut m'aider à écrire le code vb qui permette de faire cela ?
    D'avance, merci beaucoup pour votre aide.
    Pheeld.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tout dépend de l'appli que tu veux lancer et de ce que tu veux faire dedans.
    Pour une commande du dos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("cmd /c copy D:\clipart\Cabanes\ D:\Cabanes\")
    Copie un répertoire dans un autre
    Pour une appli autre qu'office
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("cmd /c c:\windows\Notepad.exe c:\ascii.txt")
    Ouvre le fichier texte dans Notepad
    Pour une appli d'office, tu précises laquelle et ce que tu veux faire
    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut Lancer une appli depuis excel
    Merci pour ta réponse. Effectivement, je vais détailler un peu ce que je souhaite faire...
    J'ai un tableau réalisé sous excel.
    Tout en étant sur ce tableau, je souhaite le copier et le coller comme une image dans un logiciel de dessin par exemple, paint.

    J'ai créé une macro qui selectionne le tableau en question et qui le copie dans le presse papier.
    J'ai ensuite completé cette macro pour qu'elle ouvre l'application paint.exe

    Je peux évidemment coller simplement la sélection dans paint, puis enregistrer l'image ainsi créée... Mais, je voudrais que tout cela soit automatisé et pratiquement "transparent" pour l'utilisateur de l'application excel :
    - selectionner le tableau (fait)
    - copier la selection dans le presse papier windows (fait)
    - ouverture de paint (fait)
    - coller la sélection
    - enregistrer l'image (en .jpg) dans un répertoire spécifique
    - fermer paint et retrouver mon classeur excel...

    Si tu vois comment faire... merci encore !
    Pheeld.

  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    je me suis pris au jeu de ton problème et j'ai fait une fonction d'export dont le concept est d'utiliser un objet graphique temporaire ...

    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
    Public Sub SaveRangeAsImage()
     
    Dim r As Range
    Dim x As Integer, y As Integer
    Dim varFullPath As Variant
    Dim Graph As String
     
    ' selection de la plage par une InputBox
    Set r = application.InputBox("Sélectionnez la plage à exporter", _
                        "Export Image", Selection.AddressLocal, Type:=8)
     
    r.Select
    ' copie de la plage en format image grâce à .CopyPicture
    Selection.CopyPicture appearance:=xlScreen, Format:=xlBitmap
    x = Selection.Width
    y = Selection.Height
     
    ' on utilise l'objet Chart pour sa facilité d'export 
    ' création du graphique
    Workbooks.Add (1)
    ActiveSheet.Name = "enGIF"
    Charts.Add
    ActiveChart.ChartType = xl3DArea
    ActiveChart.SetSourceData r
    ActiveChart.Location xlLocationAsObject, "enGIF"
    ' le graph n'est là que comme réceptacle de l'image, on le vide avec .ClearContents
    ActiveChart.ChartArea.ClearContents
    ' on colle l'image qui réside dans le presse papier
    ActiveChart.Paste
     
    ' redimensionnement
    ' on récupére le nom du graph de la collection Shapes
    Graph = Mid(ActiveChart.Name, Len(ActiveSheet.Name) + 1)
    ' on effectue un redimensionnement
    ActiveSheet.Shapes(Graph).ScaleWidth x / ActiveChart.ChartArea.Width, _
                msoFalse, msoScaleFromTopLeft
    ActiveSheet.Shapes(Graph).ScaleHeight y / ActiveChart.ChartArea.Height, _
                msoFalse, msoScaleFromTopLeft
     
    ' export
    varFullPath = application.GetSaveAsFilename("C:\Temp\export-" & Format(Now, "yyyymmddhhnn") & ".gif", _
                    "Fichiers GIF (*.gif), *.gif")
    ActiveChart.Export varFullPath, "GIF"
    ActiveChart.Pictures(1).Delete
    ActiveWorkbook.Close False
     
    End Sub
    Edit : suite à la demande je documente, est-ce plus clair ?

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci Cafeine, n'empêche que ta solution mériterait d'être dans la FAQ

  6. #6
    Invité de passage
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Par défaut
    Sous Office 2007 j'ai corrigé la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graph = Mid(ActiveChart.Name, Len(ActiveSheet.Name) + 1)
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graph = Trim(Mid(ActiveChart.Name, Len(ActiveSheet.Name) + 1))
    car le graphique était introuvable.

    A part cela ça fonctionne impecc.

    Exactement ce que je cherchais aussi.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/07/2007, 13h45
  2. Lancer une application Excel à partir de C++
    Par dhoorens dans le forum C++
    Réponses: 5
    Dernier message: 16/01/2007, 21h08
  3. lancer une application au démarrage de WinXP
    Par Sph@x dans le forum Windows
    Réponses: 6
    Dernier message: 07/04/2004, 18h05
  4. Réponses: 2
    Dernier message: 05/12/2003, 11h37
  5. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15

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