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 :

Modification Image exporte [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut Modification Image exporte
    Bonjour,

    Alors mon problème, je pense, doit être simple à résoudre... mais pas assez simple pour moi, lol.

    Je voudrais copier une sélection d'une feuille depuis Excel dans Ppt. Cette image je la voudrais sous format Bitmap, je voudrais également la redimensionner et la déplacer...

    En ce qui concerne le copié/collé format bitmap, c'est good...
    Mais je n'arrive pas à sélectionner mon image dans le fichier Ppt...
    Pour ce qui est du dimensionement et déplacement, j'ai utiliser les macros directement...

    Donc voici mon code avec en gras, là ou ça coince...
    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
    Sub le_bon_pps2()
    
    Set wdapp = CreateObject("powerpoint.application")
    wdapp.Visible = True
    Set doc = wdapp.Presentations.Add
    
    
    Sheets("Scorecard_BU").Activate
    ActiveSheet.Range("A1:P32").Select
    Selection.Copy
    
    wdapp.ActivePresentation.Slides.Add(Index:=1, Layout:=ppLayoutText).Select
    'j'ai tenté de trouvé sur l'aide Micro mais j'ai pas saisi ce qu'étais layout... pplayoutLargeObject :s
    wdapp.ActiveWindow.Selection.SlideRange.Layout = ppLayoutLargeObject
    'Je supprime tous les shapes de la slide 1 pour ainsi n'avoir plus que mon image à sélectionner
    wdapp.ActiveWindow.Selection.SlideRange.Shapes.SelectAll
    wdapp.ActiveWindow.Selection.ShapeRange.Delete
    'je ne saisis pas non plus à quoi sert IconLabel, sur l'aide ils disent que c'est pour donné un nom sous l'icone... mais je comprend pas ce qu'il veulent dire par la... j'ai essayé d'appeller l'image BSC pour l'appeller ensuite par ce nom... mais bon sa fonctionne poooo
    Labelwdapp.ActiveWindow.View.PasteSpecial DataType:=ppPasteBitmap, DisplayAsIcon:=msoTrue, IconLabel:="BSC"
    
    'j'ai fais un test directement et il me propose la solution qui suis, le problème est que cette fois l'image s'appelle Picture 5 mais la prochaine fois ce sera une autre picture XXX   :s
    wdapp.ActiveWindow.Selection.SlideRange.Shapes("Picture 5").Select    
    'C'est pourquoi je pense qu'il faudrait plutot un code comme suis ...
    wdapp.ActiveWindow.Selection.Slide.OLEObject.SelectAll
    
    
    With ActiveWindow.Selection
            .Fill.Transparency = 0#
            .LockAspectRatio = msoFalse
            .Height = 510.12
            .Width = 702.75
            .Left = 8.5
            .Top = 8.5
        End With
    
    End Sub
    Je pense qu'il y a pas grand chose à faire... mais j'ai testé tellement de truc et impossible de trouver la solution.
    J'ai en réalité déjà demandé du coté Ppt, mais pas une réponse en 1 semaine... et c'est pour le boulot, je peux pas me permettra d'attendre bcp plus et malgré toutes mes recherches je suis bloqué
    Voila je vous remercie par avance pour votre aide.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    layout: Permet la configuration de l'emplacement des différents objets graphiques
    .
    Tu a déjà regarder ce cour ?
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    Bonjour,

    Alors j'ai tenté de faire un addpictures...
    Le problème est que je dois extraire d'excel une plage et ce n'est pas possible avec cette solution puisque addpictures demande juste le fichier.
    Mais je ne peux pas spécifier que je veux le fichier "" puis la feuil "" puis la plage ""...

    quelqu'un a-t-il déjà eu ce pb, ou quelqu'un peu m'aider ?

    Avec la solution du dessus... j'arrive a copier correctement. Tout ce que je voudrais c'est comment sélectionner ce que je viens de copier pour le mettre en forme...

    Franchement 1 semaine pour trouver cette info... je commence à me ronger les ongles la !

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Transforme la plage de celluile en image que tu enregistre quelque part et ensuite tu fait ton add picture

    Un exemple que j'utilise pour un userform, il viens d'une contribtution de ouskel'n'or, tu devrais faire une recherche laba pour plus d'info je croi que l'objectif était d'utiliser une plage de cellule pour faire un tableau dans un userform

    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
    Sub exporter_Feuille_ImageJPG()
    Dim ligne As Integer, Colonne As Integer
     
    Application.ScreenUpdating = False
    If Dir(fichier2) <> "" Then Kill fichier2
    'Copie, en tant qu'image, les cellules utilisées dans la feuille.
    Feuil9.Range("K3:M4").CopyPicture
    Feuil9.Paste
     
    'Récupére la position des dernières lignes et colonnes utilisées.
    'Cette information va servir à redimensionner la taille de l'image.
    ligne = 4 'Feuil9.Cells.Find("*", Feuil9.Range("A1"), SearchDirection:=xlPrevious).Row + 1
    Colonne = 4 'Feuil9.Cells.Find("*", Feuil9.Range("A1"), SearchDirection:=xlPrevious).Column + 1
     
    'Crée un graphique temporaire
    With Feuil9.ChartObjects.Add(0, 0, Feuil9.Cells(ligne, Colonne).Left, Feuil9.Cells(ligne, Colonne).Top).Chart
        .Paste
        'exporte l'image sur le disque dur, dans le même répertoire que ce classeur.
        .Export fichier2, "JPG"
    End With
     
     
    With Feuil9
        'Supprime le graphique temporaire
        .ChartObjects(Feuil9.ChartObjects.Count).Delete
        'Supprime l'image dans la feuille.
        .Shapes(Feuil9.Shapes.Count).Delete
    End With
    Image2.Picture = LoadPicture(fichier2) 'ca tu le vire tu a ton image d'enregistrer c'est tout ce que tu veux 
    Application.ScreenUpdating = True
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    Arf j'avais envisagé cette solution... mais elle me fait créer un fichier de plus.
    Je dois minimiser les ouvertures fermetures et autres de fichier car c'est pour le boulot... et on va me dire... tu peux le rendre plus efficace ton truc
    De plus avant de faire sa... j'ai déjà pas mal de macro pour créer cette plage...
    Bref j'aurais aimé envisagé cette solution mais plus tard.

    Je copie un fichier en tant que Bitmap... ce n'est pas possible de le sélectionner ? je comprends pas... ce truc va me rendre dingue

    En tout cas merci beaucoup.
    Si jamais je reçois pas d'autre solution, je devrais la prendre.
    Il faut je présente un truc qui fonctionne avant tout et ta solution doit fonctionner

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdapp.ActivePresentation.Slides.Add(Index:=1, Layout:=ppLayoutText).Select
    'j'ai tenté de trouver sur l'aide Micro mais j'ai pas saisi ce qu'était layout...
    C'est là que ça pêche. Remplace ppLayoutText par ppLayoutBlank. (c'est bien une diapo vierge de toute forme que tu veux...)
    Je n'ai pas regardé le reste

    Citation Envoyé par l'aide
    Layout : Propriété de Slide ou de SlideRange
    Cette propriété renvoie ou définit la mise en page d'une diapositive. Type de données Long en lecture-écriture.
    En fait elle définit les fenêtres ajoutées par défaut à une diapo vierge, zones de texte essentiellement, proposées lors de l'insertion d'une nouvelle diapo. (Très casse-pieds pour ceux qui n'utilisent jamais les présentations proposées)

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour Ousk,
    Je viens juste de terminer les tests et j'ai essayer (entre autre) ce que tu suggère mais le problème vient d'ailleur.
    Je voudrais d'abord savoir sur quel OS travail fabiencal ?
    Si sur Vista...
    Si la tentative de création d'instance découle d'un appel CreateObject ou GetObject, l'objet doit trouver la clé. Dans ce cas, il peut effectuer une recherche dans la base de registres du système ou rechercher un fichier spécial qu'il crée lors de son installation, par exemple, un fichier portant l'extension .lic. Si la clé demeure introuvable, l'objet ne peut pas être lancé. Si un utilisateur final n'a pas bien installé l'application de l'objet, a supprimé accidentellement un fichier nécessaire, ou a modifié la base de registres du système, l'objet ne pourra pas trouver sa clé. Dans ce cas, l'objet ne peut pas être lancé. La création d'instance peut ainsi fonctionner sur le système du développeur, mais pas sur le système de l'utilisateur. L'utilisateur devra éventuellement réinstaller l'objet sous licence.
    C'est justement là (je pense) que le problème se situe, il me répond
    Un composant ActiveX ne peu pas créer d'objet
    .
    Je pense qu'il faudra se tourner vers les OLEobjet mais c'est pas plus façile..
    J'ai tout retourner sur Ppt 2000 et 2007 et je n'y suis pas parvenu.
    Désolé pour fabiencal.
    En relisant : j'ai enrégistré Excel 2007 mais pas Ppt, ça provient peut-être de ça.
    A+
    Edit:
    ppLayoutBlank c'est une page vierge qui n'a Rien, pas de diapo, et à partir de PP ont peu y insérer n'importe quoi, image, clipArt, graph etc..

  8. #8
    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
    Pour ma part j'ignore ta version... (Hello l'homme des bois)
    Sur 1997 à 2003, ça donnerait un truc comme ça
    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
    Sub CollerPlageDeCellulesDansPowerPoint()
    Dim AppPPT As Object
    Dim DocPPT As Object
    Dim LaDiapo As Object
        Set AppPPT = CreateObject("PowerPoint.Application")
        Set DocPPT = AppPPT.Presentations.Add
        AppPPT.Visible = True
        AppPPT.ActiveWindow.View.GotoSlide Index:=AppPPT.ActivePresentation.Slides.Add(Index:=1, Layout:=12).SlideIndex
     
        Range("A1:D10").Copy
        AppPPT.ActiveWindow.View.Paste
     
        'Sélection de l'objet Excel collé
        AppPPT.ActiveWindow.Selection.SlideRange.Shapes(AppPPT.ActiveWindow.Selection.SlideRange.Shapes.Count).Select
     
        'Mise en page
        With AppPPT.ActiveWindow.Selection.ShapeRange
            .Left = 239.5
            .Top = 205.875
            .Width = 240.875
            .Height = 128.25
        End With
        'Enregistrement sous...
        AppPPT.ActivePresentation.SaveAs Filename:="D:\ppt\DocPPT.ppt"
        AppPPT.ActivePresentation.Close
        AppPPT.Quit
        Set DocPPT = Nothing
        Set AppPPT = Nothing
    End Sub
    Avec ce code, l'objet collé est un objet Excel (plage de cellules modifiables)
    Pour coller une image je n'ai pas le code, l'enregistreur de macro étant silencieux sur cette opération pourtant réalisable manellement

    Un exemple que j'utilise pour un userform, il viens d'une contribtution de ouskel'n'or
    On ne prête qu'aux riches (salut Krovax)
    En fait, si c'est bien ce à quoi je pense, l'idée est de Caféine, il y a fort longtemps...
    Consiste à coller les cellules dans un graphe vide, graphe qui est le seul objet ayant la propriété Export... (si je me souviens bien) propriété qui permet d'exporter le graphe en tant qu'image.
    "graphe qui était le seul objet"... En fait, depuis on en a trouvé d'autres mais je ne les ai pas en tête.

    Bonne suite

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Oui, j'ai fait ça aussi et c'est sur cette ligne..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     AppPPT.ActiveWindow.View.GotoSlide Index:=AppPPT.ActivePresentation.Slides.Add(Index:=1, Layout:=12).SlideIndex
    qu'il me donne l'erreur..
    Un composant ActiveX ne peu pas créer d'objet
    et si je l'enlève y me fait la même chose sur la suivante.

  10. #10
    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
    Tel qu'il est mon code fonctionne avec Office 97 et Office 2003


    Citation Envoyé par LeBûcheron
    Oui, j'ai fait ça aussi et c'est sur cette ligne..
    qu'il me donne l'erreur..
    Contente-toi de tester mon code, tout mon code
    Pense à changer le nom du répertoire

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut

    Je me suis acharné à vouloir copier un fichier image dans un objet de PP.
    Mais ta solution pour copier directement le tableau... encore une fois
    J'apprend tout les jours
    A+

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut HAHAHAHAHAHA ENFIIIIINNNNNNN
    Bonjour à vous !

    MERCI MERCI MERCI MERCI MERCIIIIIIIIIi
    Depuis le temps que j'attendais ça... je vous remercie vraiment.
    Alors ta méthode de sélection Ouskeln' fonctionne impec.
    Comme tu l'as dit, elle ne collait pas en format bitmap, mais j'ai juste récupéré ce que j'avais fait précédemment et c'est bon je copie une image et je la sélectionne

    Voici le 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub CollerPlageDeCellulesDansPowerPoint()
    Dim AppPPT As Object
    Dim DocPPT As Object
    Dim LaDiapo As Object
        Set AppPPT = CreateObject("PowerPoint.Application")
        Set DocPPT = AppPPT.Presentations.Add
        AppPPT.Visible = True
        AppPPT.ActiveWindow.View.GotoSlide Index:=AppPPT.ActivePresentation.Slides.Add(Index:=1, Layout:=12).SlideIndex
     
        Sheets("Scorecard_BU").Activate
        ActiveSheet.Range("A1:P32").Select
        Selection.Copy
     
        AppPPT.ActiveWindow.View.PasteSpecial DataType:=ppPasteBitmap, DisplayAsIcon:=msoTrue, Iconlabel:="BSC"
     
        'Sélection de l'objet Excel collé
        AppPPT.ActiveWindow.Selection.SlideRange.Shapes(AppPPT.ActiveWindow.Selection.SlideRange.Shapes.Count).Select
     
        'Mise en page
        With AppPPT.ActiveWindow.Selection.ShapeRange
            .Fill.Transparency = 0#
            .LockAspectRatio = msoFalse
            .Height = 510.12
            .Width = 702.75
            .Left = 8.5
            .Top = 8.5
     
        End With
        'Enregistrement sous...
        AppPPT.ActivePresentation.SaveAs Filename:="D:\ppt1.ppt"
        AppPPT.ActivePresentation.Close
        AppPPT.Quit
        Set DocPPT = Nothing
        Set AppPPT = Nothing
    End Sub
    Juste une chose... que veux dire set ... = nothing ?

    Encore merci

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Par défaut
    Citation Envoyé par fabiencal Voir le message
    Juste une chose... que veux dire set ... = nothing ?
    Encore merci
    Cela permet d'enlever la mémoire que le système a alloué à l'objet DocPPT et à AppPPT

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par -={-_-}=- Voir le message
    Cela permet d'enlever la mémoire que le système a alloué à l'objet DocPPT et à AppPPT
    Ahhhh si je fais ça, au bout de 50 fois j'ai plus de RAM
    Ce serait pas plutôt "Libérer" ...
    A+
    Edit: Vu que Ousk est en vacance faut bien que je trouve un autre

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Edit: Vu que Ousk est en vacance faut bien que je trouve un autre
    c'était mérité

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    Oki merci bcp, très util avec mon PC qui commence a faire des siennes...
    Ah la vieillesse 2 ans et il geule déjà ^^

  17. #17
    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
    Citation Envoyé par LeForestier
    Edit: Vu que Ousk est en vacance faut bien que je trouve un autre
    Oui ben fais gaffe, je surveille !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/03/2009, 21h59
  2. modification image background
    Par rif15 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/04/2008, 00h22
  3. [Word] Position d'une image exportée depuis Delphi
    Par MiJack dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2008, 17h01
  4. Sur survole modification image précédente
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/12/2006, 17h02
  5. Image exportée vers Word depuis un report access
    Par thierry0409 dans le forum Access
    Réponses: 3
    Dernier message: 21/11/2005, 11h47

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