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 :

[E-03] Adapter Userform à taille de l'image de fond


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut [E-03] Adapter Userform à taille de l'image de fond
    Bonjour,

    J'ai un userform avec un contrôle image de petite taille.

    Lorsque je clique sur cette image je souhaite que l'image s'affiche en taille réelle dans un nouvel userform.

    J'ai donc mis le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_initialize()
     
    With UserForm6
        .Picture = UserForm1.Image1.Picture 'charge l'image contenue dans userform1
        .Width = UserForm1.Image1.Picture.Height
        .Height = UserForm1.Image1.Picture.Width
     
    End With
     
    End Sub
    Le problème est que la taille de l'userform est monstrueusement grande.

    pour .width il retourne 13547 et .height 9208, alors qu'Acdsee me dit que la taille de mon image fait 512x348

    Comment faire pour qu'excel agrandisse l'userform à la taille réelle de l'image?

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Citation Envoyé par allergique Voir le message
    Lorsque je clique sur cette image je souhaite que l'image s'affiche en taille réelle dans un nouvel userform.
    Bonjour,

    si ton image est plus grande que ton écran, comment veux tu qu'elle s'affiche en taille réelle!

    Il faut limiter la taille de ton Userform à la taille de ton écran, et n'afficher qu'un morçeau de l'image ?

  3. #3
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut
    Je n'ai pas dit que l'image était plus grande que l'écran puisque j'ai indiqué qu'elle fait 512x348

    Il doit y avoir un rapport avec les pixels, points ou je ne sais trop quoi mais je n'ai pas trouvé la solution

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, allergique,

    Je suppose que tu as bien évidemment fait le choix d'une image de dimensions inférieures à celles de ton écran (et qu'elle y tient donc)...

    Je suppose que lorsque tu dis "taille réelle", tu veux dire que tu as laissé à False sa propriété Stretch.

    J'ai bien compris ?

    Si oui, il ne faut pas se référer à la proprIété Picture de ton image, maIs à elle même? ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With UserForm6
        .Picture = UserForm1.Image1.Picture 'charge l'image contenue dans userform1
        .Width = UserForm1.Image1.Height
        .Height = UserForm1.Image1.Width
          
    End With
    puisque le fait de ne pas l'étirer (pas de stretch), lui donne sa taille réelle, en points.

    EDIT :
    ceci étant dit (et à moins que ton UserForm6 ne soit destinée qu'à afficher cette image et ne contienne donc aucun autre contrôle que ce contrôle image), on fait en général plutôt le contraire de ce que tu fais là :
    on choisit une taille d'UserForm puis on fait un calcul pour y afficher l'image, en conservant ses proportions, aux dimensions les plus "occupantes possibles.

    EDIT2 (important) : tu avais par ailleurs bien deviné que le problème était un problème d'échelle
    Excel et son VBA travaillent en points
    Les dimensions retournées lorsque tu te réfères à la propriété Picture de ton image ne sont pas en Pixels, mais en Himetric.
    Pour être plus précis, je ne devrais pas utiliser le mot propriété, en parlant de Image1.Picture, mais le mot Objet Picture du contrôle image1...
    dur dur ?

  5. #5
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut
    Bonjour ucfoutu

    Effectivement, la taille de l'image est inférieure à celle de l'écran.

    Dans l'userform1.image1 la propriété est en stretch.

    Dans l'userform6 je n'ai pas de contrôle "image", j'insère l'image en fond.
    Le fait d'avoir stretch dans l'userform6, zoom ou modeclip n'a pas d'incidence sur la taille de l'userform (d'après ce que j'en ai vu)

    Pour ce qui est de ta proposition de code, ça ne marche pas. Le problème est que l'image se retrouve à la même taille que celle réduite dans l'userform1, puisque l'on fait référence à la taille du contrôle image1 et non à image1.picture

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Ecoute donc :
    -ajoute un controle image image1 avec :
    - sa propriété visible = False
    - sa propriété Stretch = False

    - ne t'occupe pas du Strecth ailleurs

    puis :

    donne ton image (chemin) à image1
    -relève ses dimensions (elle seront en points, préciséments)
    - donne ces dimensions à ton userform
    - donne à ton userform le chemin de ton image (chemin à nouveau)

    Fais les choses exactement dans cet ordre, hein ...

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Oui ?
    Désolé, mais pas chez moi...
    Dieu sait comment tu continues à t'y prendre ...

    Allez, on va le faire dynamiquement :!

    Une image Image1 avec sa propriété picture définie à la création (tu pourras ensuite le faire autrement, si tu veux)...

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Image1.Visible = False
    Image1.AutoSize = True
    Image1.PictureSizeMode = 0
    DoEvents
    Me.width = Image1.Width
    Me.height = Image1.Height
    Je te signale que je viens exprès d'allumer un portable avec Excel pour tester ===>> sans aucun problème !!!



    ==========================================================================
    Edit :
    Maintenant, crois-tu qu'il est possible de se passer de l'insertion de ce contrôle image invisible ?
    La réponse est oui, ... sans aucun doute...
    Il suffit de relever les dimensions en HiMetrics retournées par ce que tu faisais avant (à savoir Image1.Picture.Width, par exemple, pour la largeur de l'objet Picture inclus dans ton contrôle Image1).
    Il ne reste alors qu'à transformer ces unités HiMetric en Unités Points
    Si tu recherchais avec mon pseudo, tu trouverais quelques-uns de mes messages à ce sujet....
    C'est simple comme bonjour !
    1 Himetric = 1 millième de centimètres
    1 pouce = 2,54 centimètres
    On compte 72 points par pouce

    Aucune de ces 4 unités (Himetric, Centimètre, Pouce et Point) ne dépend de la résolution de l'écran

    En conséquence (et en décomposant bien pour que tu comprennes mieux) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim centimetres As Double, pouces As Double, points As Double
     centimetres = Image1.Picture.Height / 1000
     pouces = centimetres / 2.54
     points = pouces * 72
     MsgBox "ton image fait " & points & " points de haut"
    (Ce ne sera "jamais que" la 4ème ou 5ème fois en 2 mois que ce type de sujet est abordé ...)

  8. #8
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour, allergique,


    EDIT :
    ceci étant dit (et à moins que ton UserForm6 ne soit destinée qu'à afficher cette image et ne contienne donc aucun autre contrôle que ce contrôle image), on fait en général plutôt le contraire de ce que tu fais là :
    on choisit une taille d'UserForm puis on fait un calcul pour y afficher l'image, en conservant ses proportions, aux dimensions les plus "occupantes possibles.
    Oui, je n'ai rien d'autre que l'image dans l'userform. Par contre je n'ai pas mis de contrôle image dans l'userform car ça me ferait agrandir à la fois la taille du contrôle et la taille de l'userform.

    C'est bizarre on me le dit souvent que je fais le contraire des autres
    Le problème de définir l'userform et d'ajuster l'image est que je me retrouverai régulièrement avec des images pixelisées. Les images sont des photos de couverture de livres prises sur internet, donc souvent de faible qualité



    Citation Envoyé par ucfoutu Voir le message
    EDIT2 (important) : tu avais par ailleurs bien deviné que le problème était un problème d'échelle
    Excel et son VBA travaillent en points
    Les dimensions retournées lorsque tu te réfères à la propriété Picture de ton image ne sont pas en Pixels, mais en Himetric.
    Pour être plus précis, je ne devrais pas utiliser le mot propriété, en parlant de Image1.Picture, mais le mot Objet Picture du contrôle image1...
    dur dur ?
    Oui, dur dur! mes connaissances de programmeur du dimanche en VBA font qu'il ne me faut pas grand-chose pour être perdu!

    Pour le himetric, ça devrait fonctionner si dans la macro je fais une conversion en pixel non?

    Citation Envoyé par ucfoutu Voir le message
    Ecoute donc :
    -ajoute un controle image image1 avec :
    - sa propriété visible = False
    - sa propriété Stretch = False

    - ne t'occupe pas du Strecth ailleurs

    puis :

    donne ton image (chemin) à image1
    -relève ses dimensions (elle seront en points, préciséments)
    - donne ces dimensions à ton userform
    - donne à ton userform le chemin de ton image (chemin à nouveau)

    Fais les choses exactement dans cet ordre, hein ...
    J'ai fais cette manip mais j'ai toujours des dimensions en 13547x9208...

    Voici le code que j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UserForm6.Image1.Picture = LoadPicture("H:\fichier excel\Images\Death note04.jpg")
    hauteur = UserForm6.Image1.Picture.Height 'si je mets mets userForm6.Image1.Height il me met un userform minuscule
    largeur = UserForm6.Image1.Picture.Width
     
    With UserForm6
        .Height = hauteur
        .Width = largeur
        .Picture = LoadPicture("H:\fichier excel\Images\Death note04.jpg")
    End With

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

Discussions similaires

  1. [XL-2013] Adapter Userform à taille de l'image
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2015, 13h28
  2. Adapter la taille d'une image de fond de page
    Par Delphi-ne dans le forum Langage
    Réponses: 6
    Dernier message: 15/07/2010, 10h53
  3. Réponses: 10
    Dernier message: 15/09/2008, 20h46
  4. Adapter la taille d'une image en background d'un tableau
    Par Poutchou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 27/04/2006, 16h53
  5. [Débutant] Comment adapter la taille d'une image ?
    Par taupeniveau dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/02/2006, 18h00

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