Insertion de photo différent mode depuis Userform

Bonjour,

J'ai créé un Userfrom avec un bouton qui me permet de rechercher une image et de la visualiser dans une zone image. J'ai aussi réussis à insérer cette photo dans une plage de cellule en lui imposant une taille. Mais j'ai un souci avec les photos en mode portrait : lorsqu'elles s'insèrent dans le classeur, celle-ci sont déformées.

Voici mon code :

Private Sub CommandButton2_Click()
Dim Image As Variant
Dim L As Single, T As Single, W As Single, H As Single

    L = Range("B35").Left
    T = Range("B35").Top
    W = Range("B35:P35").Width
    H = Range("B35:B51").Height

    Image = Application.GetOpenFilename
    If Image <> False Then
        Feuil1.Shapes.AddPicture Image, True, True, L, T, W, H
    End If

With Me.Image1
.Picture = LoadPicture(Image)
.PictureSizeMode = fmPictureSizeModeZoom
End With

End Sub

J'aimerais créer une fonction qui permette à une image en mode portrait d'être insérer dans une plage de donné et une image en mode paysage dans une autre. Tout en leur imposant une taille.

Merci par avance pour l'aide

Bonsoir,

Si ta plage est dimensionnée en fonction de tes photos orientée "paysage", il est normal que lorsque tu appliques la même taille à une photo orientée "portrait" elle soit déformée.

Si les photos que tu utilises sont de mêmes tailles en ce qui concerne respectivement leur plus grande dimension et leur plus petite, il te alors en cas de "portrait" inverser largeur et hauteur.

Pour ta question finale je n'ai pas compris ton propos, notamment la distinction que tu fais entre "image en mode portrait" et "photos en mode portrait".

Cordialement

Ferrand

Bonjour,

Effetivement, ma phrase n'était pas française du tout.

J'aimerais créer une fonction qui permette à une image en mode portrait d'être insérer dans des cellules fussioné ( ex : de B5 à M27) et une image en mode paysage dans une autre (ex : de B5 à G40) .

Quel code faut-il que je rajoute au miens pour obtenir ce que je veux?

Merci

Bonsoir,

Tu n'insères pas une image dans des cellules. L'image est un objet Shape rattaché à la feuille. Tu le positionnes par rapport aux cellules.

Le problème résulte en fait de la méthode d'insertion... Essaie donc le code ci-dessous (le tien révisé) pour insérer l'image telle quelle et la redimensionner ensuite.

Private Sub CommandButton1_Click()
    Dim Image, Imgi As Object, L!, T!, W!, H!, wi!, hi!
    With Feuil1
        L = Range("B35").Left
        T = Range("B35").Top
        W = Range("N35").Left - L
        H = Range("J35").Left - L
    End With
    Image = Application.GetOpenFilename
    If Image <> False Then
        Set Imgi = Feuil1.Pictures.Insert(Image)
        With Imgi
            wi = .Width
            hi = .Height
            If wi < hi Then W = H
            If wi >= W Then
                H = hi * W / wi
            Else
                W = wi
                H = hi
            End If
            .Left = L
            .Top = T
            .Width = W
            .Height = H
        End With

        With Me.Image1
            .Picture = LoadPicture(Image)
            .PictureSizeMode = fmPictureSizeModeZoom
        End With
    End If
End Sub

Pour le dimensionnement, je me suis basé sur le rapport des 2 dimensions standard de la photo argentique et toujours du numérique haut de gamme, mais ce n'est pas le cas de tous les appareils numériques (donc revoir les adaptations selon le cas).

Il suppose que les colonnes B à M ont même largeur et que la largeur de cette plage constitue ta largeur standard pour les photos "paysage", j'ai donc pris les 2/3 comme hauteur standard des mêmes photos, qui devient la largeur stadard des photos "portrait".

Donc on prédimensionne L T W H sur cette base. Une fois la photo insérée on prélève sa largeur et sa hauteur ; si sa hauteur est supérieure à la largeur, on fait W = H pour inverser, sinon on laisse. Mais dans les 2 cas on recalcule la hauteur pour maintenir la proportionnalité existante (et éviter toute déformation), et je n'agrandis pas l'image si l'original est inférieur à W...

A toi de voir la suite.

Ferrand

Bonsoir

Merci MFerrand pour cette réponse, j'essaie demain à tête reposé et je vous dis si ce code est bon.

Cordialement

Bonjour,

Je te remercie, mais j'aurais une dernière question:

Est-il possible que, peu importe les modes de mes photos (portrait ou panoramique), elles s'insèrent toutes à partir de la même cellule. J’aimerais que le coin gauche de toutes les photos soit la cellule B35.

Je n’ai pas réussis à modifier le code de MFerrand.

Merci

C'est le cas dans ce code (repris de ton code initial) : c'est défini par L et T qui positionnent l'angle supérieur gauche de l'image sur l'angle supérieur gauche de la cellule B35.

Bonne journée

Ferrand

Lorsque que je mets en place ce code et que je lance mon userform, les images en portrait s'insèrent dans une autre cellule, vers les cellules R27, et ça pour n'importe quelle photo en mode portrait

Cordialement

Je peux vous envoyer mon fichier pour voir ce qui ne va pas?

Curieux ! Tu peux envoyer.

Rechercher des sujets similaires à "insertion photo different mode userform"