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 :

Sens d'insertion d'image dans une plage


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut Sens d'insertion d'image dans une plage
    Bonjour à tous

    Dans le cadre d'une application multi-User, je souhaiter intégrer des images dans des plages définie.

    J'ai donc fait une programmation qui limite l'image en hauteur dans une plage correspondante à une image en mode paysage.

    Le problème est que un petit malin a souhaiter importer une image beaucoup plus large que la normale
    Ce qui fait que l'image dépasse de chaque coté de la plage défini.

    La programmation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub ImageShearche1()
     
    Call N_Protect
     
    Dim ImageFile As FileDialog
     
    Set ImageFile = Application.FileDialog(msoFileDialogFilePicker)
     
    With ImageFile
        .Title = "Sélectionner une image"
        .Filters.Add "Toutes les images", "*.JPG, *.gif, *.PNG,1"
     
        If .Show <> -1 Then
            GoTo Vide
        End If
     
        Sheets("Situation").Range("Z6") = .SelectedItems(1)
    End With
     
    Call AfficherImage1 '________
     
    Vide:
    Call Protect
    End Sub

    Puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub AfficherImage1() '----------
     
    Dim ImageLien As String
     
    With Sheets("Situation")
     
        On Error Resume Next
        .Shapes("monImage1").Delete '________
        On Error GoTo 0
     
        ImageLien = Range("Z6") '-------------
     
        If ImageLien = Empty Then
            Exit Sub
        End If
     
        With .Pictures.Insert(ImageLien)
            With .ShapeRange
                .Name = "MonImage1" '________
                .LockAspectRatio = msoTrue
                'Taille de l'image
                .Height = Range("B8:G24").Height - 4 '---------
                '.Width = Range("B8:G24").Width - 4
            End With
     
        End With
     
        With .Shapes("MonImage1") '__________
            .Left = Sheets("Situation").Range("B8").Left
            .Top = Sheets("Situation").Range("B8").Top
            .IncrementLeft (Range("B8:G24").Width - .Width) / 2
            .IncrementTop (Range("B8:G24").Height - .Height) / 2
        End With
     
    End With
     
    End Sub
    Je souhaiterais donc ajouter une condition permettant de définir si l'image est en mode paysage ou portrait
    me permettant d'utiliser soi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Height = Range("B8:G24").Height - 4
    soi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Width = Range("B8:G24").Width - 4
    Si vous aviez un petit bout de code me permettant d'avancer, ce serait super

    En vous remerciant d'avance, Cordialement Eric

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2019
    Messages : 151
    Par défaut
    Bonjour,
    à adapter dans un sens ou bien dans l'autre,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if .Height = Range("B8:G24").Height - 4 < .Width = Range("B8:G24").Width - 4  then
    .Width = Range("B8:G24").Width - 4
    else
    .Height = Range("B8:G24").Height - 4
    end if

  3. #3
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut
    Bonjour TonyNiort79

    Merci de votre réponse

    En fait le code proposé ne change rien car il test la taille de la plage et non celui de l'image.

    Il faut dire que ma demande vous a surement induit en erreur.

    Par contre le code m'a permis de trouver le bon code pour le teste de l'image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Dim Haut As Variant
    Dim Larg As Variant
     
    With .Pictures.Insert(ImageLien)
            With .ShapeRange
                .Name = "MonImage1" '________
                .LockAspectRatio = msoTrue
                'Taille de l'image
     
                Haut = .Height
                Larg = .Width
     
                If Haut > Larg Then
                    .Height = Range("B8:G24").Height - 4
                Else
                    .Width = Range("B8:G24").Width - 4
                End If
            End With
     
        End With
    Un grand merci car je ne savait pas que l'on pouvait assigner la valeur de .Height ou .Width a une variable.

    Cordialement

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

Discussions similaires

  1. Insertion d'images dans une div
    Par madislak dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/11/2007, 17h07
  2. Insertion de données dans une plage à partir d'un formulaire
    Par andre55 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/10/2007, 10h48
  3. [VS2005] insertion d'images dans une base access
    Par lightedge dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/09/2007, 09h25
  4. Problème d'insertion d'image dans une fenêtre.
    Par Antigonos Ier Gonatas dans le forum Tkinter
    Réponses: 2
    Dernier message: 26/08/2006, 12h44
  5. [MySQL] Insertion d'image dans une base de données
    Par dragonfly dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2006, 14h59

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