[Déplacé VB6 --> VBA] adapter la taille d'une image dans une userform [Résolu]

Messages postés
13
Date d'inscription
mercredi 20 mai 2009
Dernière intervention
13 octobre 2009
- 13 juil. 2009 à 13:01 - Dernière réponse :
Messages postés
13
Date d'inscription
mercredi 20 mai 2009
Dernière intervention
13 octobre 2009
- 16 juil. 2009 à 18:07
Salut à tous,
mon problème est le suivant : je souhaite adapter la taille d'une image qui provient d'une feuille excel dans la picture d'un userform. j'arrive à l'envoyer mais elle ne veut pas se redimenssioner. Pouvez vous m'aider car je ne vois pas ce qui pose problème dans mon code ci dessous (l'erreur intervient sur les 2 dernieres lignes : objet requis).
Merci d'avance

Sub MetLimage()


Dim largeur1_dispo As Long
Dim hauteur1_dispo As Long


largeur1_dispo = interface.Image1.Width
hauteur1_dispo = interface.Image1.Height




'insertion des graphiques dans l'interface
Set LeGraph1 = Sheets("rebut ligne cis")
NomImage1 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
LeGraph1.Export Filename:=NomImage1, FilterName:="GIF"
interface.Image1.Picture = LoadPicture(NomImage1)
NomImage1.Width = largeur1_dispo
NomImage1.Height = hauteur1_dispo

end sub
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
13
Date d'inscription
mercredi 20 mai 2009
Dernière intervention
13 octobre 2009
16 juil. 2009 à 18:07
1
Merci
promblème résolu... et comme le dit Jack ce que je chercher à faire se trouver dans le fait de mettre la propriétés PictureSizeMode à Stretch.
Merci pour votre aide et pour ta contribution jmf0...

Merci Dylanoic 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Dylanoic
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
13 juil. 2009 à 13:35
0
Merci
Salut
NomImage1 est une chaine de caractère qui défini le chemin de ton image, pas un objet.
L'objet, c'est Image1 ou Image1.Picture
Mais bon, je ne vois pas pourquoi tu redonnes à l'image les dimensions qu'elle connait déjà.

Voir propriété PictureSizeMode de l'objet Image

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
13
Date d'inscription
mercredi 20 mai 2009
Dernière intervention
13 octobre 2009
13 juil. 2009 à 13:58
0
Merci
euhh non elle ne connais pas les dimensions qu'elle doit avoir. L'image doit apparaitre dans mon userform, ce qui se passe pour le moment c'est qu'elle apparait mais avec des dimensions trop grande pour l'affichage dans le "picture" de l'userform. J'aurais voulu qu'elle s'adapte a la place dont elle dispose dans cette userform (largeur_dispo et hauteur_dispo).
Je vais voir le PictureSizeMode.
Merci.
Commenter la réponse de Dylanoic
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
13 juil. 2009 à 15:26
0
Merci
D'où l'intérêt de poser une question avec précision ...
La propriété PictureSizeMode est en effet à utiliser, mais pas uniquement
Il va au préalable falloir que tu fasses un petit calcul arithmétique pour déterminer les dimensions optimales (en fonction de celles de ta UserForm) pour conserver les proportions hauteur/largeur (mais ce n'est là que de l'arithmétique
.
Commenter la réponse de jmf0
Messages postés
13
Date d'inscription
mercredi 20 mai 2009
Dernière intervention
13 octobre 2009
14 juil. 2009 à 13:36
0
Merci
Bonjour,
je ne vois pas pourquoi je devrais déterminer les dimensions optimales car la largeur_dispo et la hauteur_dispo sont connu.es.. Il faut juste que l'image que j'envoie dedans prenne ses valeurs (qu'elle se redimenssionne). Pour moi, c'est bien le probleme de trouver quelle objet mettre devant width et height des 2 dernières lignes. Mais j'ai tout essayer sans résultats (LeGraph1, Image1...).
Commenter la réponse de Dylanoic
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
14 juil. 2009 à 19:10
0
Merci
Je suis désolé pour toi, mais j'insiste sur ce que je t'ai exposé.
Tout autre procédé d'étirement sans ce calcul arithmétique préalable conduirait inévitablement, si le rapport hauteur/largeur de ta photo n'est pas égal à celui de ton écran, à une distorsion de l'image !
Veux-tu bien réaliser que tu peux avoir :
- un écran plus large que haut - un écran plus haut que large, etc ...
- une image plus haute que large - une image plus large que haute, etc...

Prends une feuille de papier et tu comprendras vite ...
Commenter la réponse de jmf0
Messages postés
13
Date d'inscription
mercredi 20 mai 2009
Dernière intervention
13 octobre 2009
14 juil. 2009 à 19:29
0
Merci
wiii, je suis bien conscient que ces variations sont à prendre en compte mais il ne s'agit pas d'envoyer une image sur tout mon userform mais seulement dans l'espace picture qui lui est associé... En effet, j'ai 9 image différentes qui s'afficheront sur des parties différentes de l'userform. Le problème n'a donc rien a voir avec la taille de l'écran mais plutot avec la taille des pictures dans mon userform... Pour eviter le problème d'applatissement ou d'étirement, j'ai tt simplement préétabli les dimensions largeur_dispo et hauteur_dispo de chaque picture de mon userfom...cela leur donnera un format 4/3 environ...
Je vais me renseigner et faire quelques test sur ce que tu me conseil ;)
merci

voici le code pour le moment...

Public LeGraph1
Public LeGraph2
Public LeGraph3
Public LeGraph4
Public LeGraph5
Public LeGraph6
Public LeGraph7
Public LeGraph8
Public LeGraph9

Sub MetLimage()


Dim largeur1_dispo As Long
Dim hauteur1_dispo As Long


largeur1_dispo = interface.Image1.Width
hauteur1_dispo = interface.Image1.Height




'insertion des graphiques dans l'interface
Set LeGraph1 = Sheets("rebut ligne cis")
NomImage1 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
LeGraph1.Export Filename:=NomImage1, FilterName:="GIF"
interface.Image1.Picture = LoadPicture(NomImage1)
'NomImage1.Width = largeur1_dispo
'NomImage1.Height = hauteur1_dispo




Set LeGraph2 = Sheets("rebut ligne retr")
NomImage2 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
LeGraph2.Export Filename:=NomImage2, FilterName:="GIF"
interface.Image2.Picture = LoadPicture(NomImage2)


Set LeGraph3 = Sheets("rebut ligne moul")
NomImage3 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
LeGraph3.Export Filename:=NomImage3, FilterName:="GIF"
interface.Image3.Picture = LoadPicture(NomImage3)


Set LeGraph4 = Sheets("rebut ligne sert")
NomImage4 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
LeGraph4.Export Filename:=NomImage4, FilterName:="GIF"
interface.Image4.Picture = LoadPicture(NomImage4)


Set LeGraph5 = Sheets("rebut ligne testeur")
NomImage5 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
LeGraph5.Export Filename:=NomImage5, FilterName:="GIF"
interface.Image5.Picture = LoadPicture(NomImage5)


'Set LeGraph6 = Worksheets("Feuil2").ChartObjects(6).Chart
'NomImage6 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
'LeGraph6.Export Filename:=NomImage6, FilterName:="GIF"
'interface.Image6.Picture = LoadPicture(NomImage6)


Set LeGraph7 = Sheets("rebut ligne total")
NomImage7 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
LeGraph7.Export Filename:=NomImage7, FilterName:="GIF"
interface.Image7.Picture = LoadPicture(NomImage7)


'Set LeGraph8 = Worksheets("Feuil2").ChartObjects(8).Chart
'NomImage8 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
'LeGraph8.Export Filename:=NomImage8, FilterName:="GIF"
'interface.Image8.Picture = LoadPicture(NomImage8)


'Set LeGraph9 = Worksheets("Feuil2").ChartObjects(9).Chart
'NomImage9 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
'LeGraph9.Export Filename:=NomImage9, FilterName:="GIF"
'interface.Image9.Picture = LoadPicture(NomImage9)




   
End Sub
Commenter la réponse de Dylanoic
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
14 juil. 2009 à 21:51
0
Merci
Qu'il s'agisse de ton Userform ou qu'il s'agisse d'un "espace réservé à cet effet sur ton Userform" , le problème est exactement le même et passe par un calcul arithmétique (et le même) , ami !
Bref...

Bonne chance ...
Commenter la réponse de jmf0
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
14 juil. 2009 à 21:58
0
Merci
Juste un truc, alors (qui n'a rien à voir avec la connaissance d'un langage informatique, mais tout avec la jugeote) :
Réserve des espaces carrés et utilise-les au maximum en :
occupant la largeur maximum (si ton image est plus large que hauteà ou la hauteur maximum (si ton image est plus haute que large) et en calculant l'autre dimension par application d'un coefficient permettant de conserver les proportions.
Le tout en utilisant la propriété (dont tu as toi-même parléà permettant 'ajustement par étirement.
Si tout cela reste pour toi du chinois, n'en parlons plus ...
Commenter la réponse de jmf0
Messages postés
13
Date d'inscription
mercredi 20 mai 2009
Dernière intervention
13 octobre 2009
15 juil. 2009 à 00:55
0
Merci
Je te remercie et je vais pousser un peu plus mon raisonnement dans ton sens...
Je me suis certainement borné à faire ce truc avec des outils qui ne sont pas adaptés (mais a force d'être dessus, on a du mal a prendre du recul ^^).
Bonne soirée a vous tous.
Commenter la réponse de Dylanoic

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.