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 :

Copier une image SANS utiliser le presse-papier


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Copier une image SANS utiliser le presse-papier
    Bonjour/bonsoir

    J'ai beau chercher et retourner le web dans tous les sens, je ne trouve pas de réponse à ce simple problème. J'en déduis que c'est probablement impossible, mais en désespoir de cause, je pose la question - sait-on jamais.

    J'utilise professionnellement une macro vba qui a tendance à être gourmande en temps, sans entrer dans les détails disons que j'ai pu l'optimiser pour qu'au moins il soit possible de travailler à côté sur d'autres logiciels qu'Excel sans être trop limité - notamment en contournant toutes les parties utilisant le copier-coller, sauf une : à un moment régulier de la macro, une image est copiée d'une page source vers une page nouvellement créée.
    Et c'est là que la bât blesse, car il me semble impossible de trouver la moindre information sur une possibilité de copier une image sans passer par le clipboard, ni une lecture depuis un fichier image local (la macro étant déjà assez lente, si en plus elle doit régulièrement charger une image depuis le disque, toute mon optimisation n'aura servi à rien).
    Je comprends d'autant moins cette impossibilité que s'il est possible d'enregistrer l'image sur le clipboard puis de la recopier par la suite, cela signifie qu'un objet image est capable de s'enregistrer en mémoire localement.

    Alors voilà, j'aimerais savoir si quelqu'un a déjà eu à résoudre ce type de souci, peut-être en passant par un flux (en prog "traditionnelle" je serais passé par un objet de type memorystream ou assimilé, mais j'avoue que sur VBA mes connaissances sont encore limitées quant à l'existence et l'usage de ce type de solution) ?

    De toute façon c'est ça ou rien, alors si quelqu'un a une idée, je suis preneur.
    Et peut-être qu'un jour un autre "bricoleur" perdu tombera sur ce sujet en cherchant à résoudre le même problème...


    Edit : je précise que pour le moment la macro tourne sur 97, un portage vers 2010 étant en prévision (mais ceci est une autre histoire).

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Dans quoi est contenue ton image exactement? Directement en image de fond ou dans une zone image?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Je n'ai jamais eu besoin de mettre une image en fond, donc ça me semblait évident d'où cet oubli de précision, mais, oui, c'est une image dans un conteneur image, telle qu'on l'obtient en utilisant l'insertion depuis un fichier.

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Je n'aime pas trop les solution avec des select mais dans ce cas, je n'en ai pas trouvé d'autre. Je n'arrive pas à avoir accès à la propriété Picture du shape.

    Essai de cette facon, en activant la feuille de destination puis la cellule de destination.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Image11.Copy
    Sheets("Feuil2").Select
    Sheets("Feuil2").Range("C8").Select
    Sheets("Feuil2").Paste
    Si j'ai un peu de temps demain soir, je regarderai de nouveau

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu...!!!
    bonjour

    a partir du moment ou tu fait
    "Image11.Copy" tu te sert du clipboard

    comme te l'a dit qwazerty les "selects et activate" rendent très longues et gourmandes les macros

    il vaut mieux préciser le nom du sheets de depart ou se trouve ton image ,

    et le sheets de destination pour le collage de ton image

    essaie ça :
    'un exemple qui ajoute un sheets et colle l'image du sheets 1 dans le nouveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets.Add After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "nouveausheet"
            Sheets(1).Shapes("Image 1").Copy
        Sheets("nouveausheet").Paste
    ' a adapter a ton cas
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Oui en effet j'avais éludé le problème du Clipboard...

    Pour ce qui est des select, je les ai mis pour que l'image soit placée directement au bon endroit sur la feuille, mais ton écriture est préférable en effet. Et d'un autre coté pourquoi ne pas ensuite modifier les propriétés top et left de l'image, ce qui supprime les Select "indésirables"

    [Edit]
    Pour l'utilisation du Add, je préfère ce type d'écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim NewSheet as worksheet
     
    set Newsheet = thisworkbook.sheets.add(...)
    newsheet.name = "MonSheet"
    :p
    [/Edit]
    ++
    Qwaz

    Une autre solution serait d'utiliser des composants images (tu les trouveras dans l'onglet developper).
    Sur ta feuille d'origine tu places un composant image en lieu est place de ton image insérée (Shape).
    Ensuite dans ton code il te suffit de rajouter dynamiquement( une image sur ta nouvelle feuille, puis de "copier" le contenu de ton image source vers ton image destination en utilisant la propriété Picture des deux images... et dans ce cas, plus de clipboard

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour qwazerty
    tu dis :
    il te suffit de rajouter dynamiquement( une image sur ta nouvelle feuille, puis de "copier" le contenu de ton image source vers ton image destination
    a partir du moment ou il "COPY" il utilise le clipboard enfin je crois

    maintenant si son image n'est pas dans le classeur mais dans un dossier effectivement le picture sur chaque image donnera le même résultât mais ça
    oblige a avoir le fichier image a porté en même tant que le classeur


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    en fait ce qui se passe dans ma macro

    c'est que forcement le sheets de destination est activé donc un select est superflu
    ensuite ton ecriture me seduit aussi alors :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim NewSheet As Worksheet
    Set NewSheet = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)) 'on ajoute le sheets
    NewSheet.Name = "MonSheet" 'on nomme le sheets
    Sheets(1).Shapes("Image 1").Copy 'on copy
        Sheets("MonSheet").Paste 'on colle
    Application.CutCopyMode = False 'vide le presse papier (clipboard)
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    en fait non, pas besoin du clip bord, un fois ton image de destintion mise en place dynamiquement tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    imageDestination.picture = imageSource.picture
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour misterlo et qwazerty


    pour qwazerty: quel est le conteneur de l'image n°2?

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour.

    Tout d'abord, merci à tous deux de vos réponses, et de vous être penché sur mon "petit" problème.

    L'aspect important est réellement de ne pas utiliser le clipboard, ce qui exclue les ".Copy", ".CopyImage" et les ".Paste" en tous genres et de quelque manière que ce soit.
    Parce que sinon, je pense que le plus simple et efficace dans mon cas, où la position par défaut en haut à gauche d'une nouvelle image est justement la bonne (c'est sûr que ça aurait été une autre paire de manches si j'avais en plus eu besoin de copier sa position), c'est celle que j'ai adopté pour l'instant, à savoir : identifier le premier Shape qui soit une image sur ma page source, le repérer par un set sur une variable (en l'occurrence sans chercher très loin je l'ai nommée srcImage), puis ensuite, dans la boucle principale qui doit recopier cette image sur chaque nouvelle page, enchaîner un setImage.Copy, et un .Paste.

    Je précise qu'avant de venir ennuyer le monde avec mes soucis j'ai effectué quelques tests et recherches par moi-même - j'estime qu'avant de réclamer de l'aide il faut soi-même faire l'effort de chercher.

    Ainsi, j'ai pu, entre autres, créer un nouveau Shape de type image sur mes pages, sans toutefois parvenir à lui faire charger son image depuis un autre composant image. En l'absence de source image sur disque valide, il affiche un type différent (une boîte cylindrique 3D si je me souviens bien de ce que j'ai vu). Quant au .Picture, VBA ne veut pas en entendre parler et il m'envoie suer en me disant que cette propriété n'existe pas.
    J'ai aussi tenté avec .Fill.UserPicture, mais là encore cette fonction n'accepte qu'un chemin vers un fichier image sur disque.
    C'est sûr que ça aurait été plus simple si l'objet Shape était doté, tout comme l'objet Range, d'une fonction Copy acceptant en option un objet de même type en paramètre... Oui, j'ai essayé, bien que je savais que c'était peine perdue (trop beau pour être vrai ).

    Edit :
    Je me rends compte qu'en décrivant un peu plus le contexte ça permettrait de mieux situer le besoin.
    Cette macro est contenue dans un classeur de travail qui lui est spécifique. Elle ouvre des fichiers texte (préalablement définis dans une liste) comme nouveaux classeurs, leur applique une mise en forme selon un fichier d'instruction - mise en forme qui peut inclure l'ajout d'un logo en haut à gauche, la source de mon problème ici - puis les enregistre en format Excel sous un nouveau nom (donc en gros elle convertit des .txt en .xls selon une procédure définie). Si un logo est à ajouter, la macro le trouve sur une feuille dédiée dans son propre classeur de travail. Chaque fichier est traité séparément (la macro traite le premier, le ferme, traite le second, le ferme, etc.)
    Généralement, le nombre de fichiers à convertir est de l'ordre d'une cinquantaine à une centaine. Mais dans certains cas particuliers, on peut atteindre le millier, voire même plus, ce qui prend un temps fou. Temps pendant lequel aucun travail n'est possible : juste de la consultation, mais pas de programmation ou autre travail impliquant de manipuler du texte, puisque le copié-collé est banni.
    Je ne suis pas l'auteur initial de cette macro, mais en tant qu'utilisateur éclairé j'ai finalement décidé de l'optimiser et d'en améliorer "l'ergonomie". En remplaçant tous les "Select" et autres "Activate", sans compter le très gourmand "Copy/Paste", j'ai pu obtenir un gain jusqu'à 2/3 de temps en moins au total - ce qui est déjà vraiment très bien. Mais si en plus je pouvais m'affranchir totalement du copié-collé...

  12. #12
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Je vois que mes explications n'ont pas suffit
    Voila un exemple, joint à cette discussion, de ce dont je parlais plus haut

    ++
    Qwaz
    Fichiers attachés Fichiers attachés

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Re

    bonjour qwazerty

    je comprend mieux

    d'où ma question quel type de conteneur dans ma précédente réponse

    on est bien avec un controls activex et non pas un e image du menu insertion

    je commençais a devenir zinzin
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SalutPatrick

    Oui, j'ai débuter sur VisualBasic, donc j'ai toujours gardé l'habitude de nommer un composant "activeX image" sous l'intitulé "composant image", c'est pour cela que j'avais préciser ou le trouver.

    Citation Envoyé par Qwazerty au post n°7
    Une autre solution serait d'utiliser des composants images (tu les trouveras dans l'onglet developper).
    Sur ta feuille d'origine tu places un composant image en lieu est place de ton image insérée (Shape).
    [...]
    Voili , j'éspère que cette solution conviendra au besoin de MisterLo

    ++
    Bonne soirée
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Re
    oui mais beaucoup plus lourd le fichier néanmoins


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Visiblement on parle ici d'un logo sur une feuille, pas de 50 images sur 50 feuilles. Je pense donc que l'utilisation d'un composant image est adapté au vu des conditions. les fichiers feront peut-être 50Ko de plus mais au final la macro sera moins génératrice de perturbations puisque n'utilisant pas le ClipBoard.
    Mais bon la validité de cette solution appartient à MisterLo je pense, je ne peux pas être juge et partie :p

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  17. #17
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Ah ouais, un objet Ole, carrément.
    Pour le poids, je verrais à combien s'élève le "gain", mais pour une image en dessous de 100 de côté (affichée à mi-taille pour des raisons de rendu) je doute que ce soit énorme. Par contre, je n'ai pas encore eu l'occasion d'adapter mon code, mais je remarque qu'un objet Ole, une fois posé, je ne peux ni le déplacer, ni le redimensionner, ni faire quoi que ce soit à l'édition manuelle, en fait. N'étant pas du tout habitué à l'usage de ce type de solution, peut-être que je passe à côté de quelque-chose ?
    Quoi qu'il en soit, je ferrai le test pour voir si cette solution convient à mon problème, mais, du coup, ça veut bien dire qu'une image au format de base sous Excel (en conteneur shape, donc) ne peut absolument pas être copiée sans passer par le clipboard. Passez moi l'expression, mais je trouve ça fort de café, quand-même.

    (par contre et pour note, si, précisément, on parle bien de "50 images sur 50 feuilles", car tous ces fichiers transformés sont ensuite réunis en un seul par une autre macro, et au final je me retrouve avec quelques classeurs qui réunissent une centaine de pages chacun... mais je comparerais les tailles, de toute façon, comme ça on verra bien si ça reste raisonnable ou pas - c'est sûr que si mes fichiers passent de quelques Mo à quelques dizaines de Mo, ça va pas le faire )

  18. #18
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'On la met en place
    NewImage.Top = 60
    NewImage.Left = 50
    NewImage.Height = 200
    NewImage.Width = 200
     
    'On fait en sorte que l'image contenu dans le composant se déforme en fonction de la taille du composant
    NewImage.Object.PictureSizeMode = fmPictureSizeModeStretch
    'Dans cette configuration, il faut redefinir height et width en gardant le ratio d'origine de l'image pour ne pas la déformer.
    Pour ce qui est du poids, tu dis
    Citation Envoyé par MisterLo
    pour une image en dessous de 100 de côté (affichée à mi-taille pour des raisons de rendu)
    Le fait de changer la taille d'affichage ne modifie en rien le poids de cette image, il serait mieux de carrément la réduire à la taille désiré avec un soft de dessin, pour une réduction de 50% de la taille d'un image de 100Ko, le poids de l'image devrait passer à 25Ko... donc ça vaut le coup de prendre 2min pour le faire

    Citation Envoyé par MisterLo
    ça veut bien dire qu'une image au format de base sous Excel (en conteneur shape, donc) ne peut absolument pas être copiée sans passer par le clipboard
    Pour ma part je ne sais pas faire, ce qui ne veut pas forcement dire que c'est impossible .

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  19. #19
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Ce que je voulais dire, c'est qu'en ouvrant le fichier d'exemple que tu as donné, j'ai tenté de "toucher" à l'image dans Excel, mais elle ne prend pas le clic, ni même le focus. Je ne peux donc ni la redimensionner, ni la déplacer, ni quoi que ce soit, c'est un peu comme si j'avais une fenêtre sans bords en always-on-top.
    C'est pour ça que je suppose que c'est un PEBKAC, en d'autres termes que ma méconnaissance de l'usage des OLE est la raison pour laquelle je ne peux rien en faire.

    Je sais parfaitement que de réduire la taille d'affichage ne réduit pas le poids, je me suis mal exprimé. En fait j'ai essayé de réduire l'image à la taille que je souhaitais (merci GIMP), mais à l'affichage je me suis aperçu que même en utilisant la meilleur extrapolation dont je dispose le rendu était plus "flou" que la version réduite par Excel (si, si !). J'imagine que c'est un bête souci de fonctions utilisées mais j'avais un petit peu d'autres soucis plus importants à régler que de me perdre dans des recherches poussées, aussi comme j'ai vu qu'une image de taille double de l'affichage final suffisait à me donner ce que je voulais, je me suis arrêté là sans chercher plus loin.

    Pour l'impossibilité, en même temps il n'y a pas 36 manières de copier une image par programmation, et sans avoir accès au contenu image d'un Shape je ne vois pas vraiment comment faire autrement, et ce quelle que soit la manière envisagée.


    Edit : En fait, je viens de trouver pour le OLE, c'était bien un PEBKAC. Il suffit de se mettre en mode création et on a accès aux paramètres sans souci.

  20. #20
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Verdict : non seulement ça marche exactement comme je le souhaitais, mais pour la modique "somme" de 5 ko supplémentaires par fiche, autant dire peanuts.

    Par contre, là où l'insertion directe (mode shape) était capable de lire du png, il semble que l'insertion OLE ne connaisse pas ce format - à moins de devoir passer par un type OLE différent ? - mais enfin ce n'est pas très grave dans la configuration actuelle (bien entendu, la comparaison citée ci-dessus a été effectuée entre l'ancienne et la nouvelle version avec le même type d'image).

    Je considère donc cette problématique comme globalement résolue, mais si quelqu'un sait (ou trouve) comment copier-coller une image shape sans passer par le clipboard, qu'il ou elle n'hésite pas à expliquer le mode opératoire ici, ne serait-ce que par curiosité on aimerait savoir.


    Edit : par contre, si en bonus quelqu'un peut me dire comment empêcher une macro de s'arrêter si on utilise [shift] ailleurs, je suis preneur...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2007, 11h33
  2. Copier une page CppWebBrowser danse le press papier
    Par Shikamaru86 dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/09/2006, 14h52
  3. [TP] Copier une variable string dans le presse-papier
    Par astyan dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 04/08/2006, 22h47
  4. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54
  5. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 14h51

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