Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 03h27   #1
Invité de passage
 
Homme
Chargé d'affaire
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Eure et Loir (Centre)

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

Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
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).
MisterLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 06h13   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 11h48   #3
Invité de passage
 
Homme
Chargé d'affaire
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Eure et Loir (Centre)

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

Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
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.
MisterLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h24   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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 :
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 18h22   #5
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
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 :
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 18h57   #6
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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 :
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 20h01   #7
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour qwazerty
tu dis :
Citation:
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 20h25   #8
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
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 :
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 20h53   #9
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
en fait non, pas besoin du clip bord, un fois ton image de destintion mise en place dynamiquement tu fais
Code :
1
2
 
imageDestination.picture = imageSource.picture
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 12h12   #10
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 13h06   #11
Invité de passage
 
Homme
Chargé d'affaire
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Eure et Loir (Centre)

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

Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
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é...
MisterLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 17h04   #12
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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
Type de fichier : zip Classeur2.zip (136,5 Ko, 5 affichages)
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/11/2011, 17h23   #13
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 17h51   #14
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 17h58   #15
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

Re
oui mais beaucoup plus lourd le fichier néanmoins


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 18h10   #16
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 11h59   #17
Invité de passage
 
Homme
Chargé d'affaire
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Eure et Loir (Centre)

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

Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
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 )
MisterLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 13h53   #18
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Code :
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2011, 15h19   #19
Invité de passage
 
Homme
Chargé d'affaire
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Eure et Loir (Centre)

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

Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
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.
MisterLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 16h36   #20
Invité de passage
 
Homme
Chargé d'affaire
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Eure et Loir (Centre)

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

Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
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...
MisterLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h33.


 
 
 
 
Partenaires

Hébergement Web