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 :

Image contenu dans une cellule [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Image contenu dans une cellule
    Bonjour,

    je cherche une astuce pour contrôler qu'une image insérée dans une cellule ne déborde pas de la taille de la cellule.

    Il s'agit d'un logo inséré par l'utilisateur avec une taille maximum équivalente à la taille de la cellule. Je ne peux pas redimensionner l'image car si elle est plus petite elle doit le rester

    De plus je ne sais pas à priori si c'est la longueur ou la hauteur qui est hors norme.

    J'envisage de récupérer la taille de l'image (ça doit être possible) et comparer ensuite les hauteurs et longueurs pour informer l'utilisateur que son logo est trop grand

    Il y a peut être une solution plus simple ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Voilà le code que j'ai pu écrire pour ceux que cela intéresse pour obtenir la largeur et la hauteur d'une image située en "E13" sachant qu'il n'y a qu'une image dans la feuille "Logo"

    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
    Sub sizeImg()
     
    Dim sh As Shape, log As Worksheet, Himage As Single, Limage As Single, photo As String
     
    Set log = Sheets("Logo")
    For Each sh In log.Shapes
        photo = "$E$13"
        If sh.Type = msoPicture Then
            If sh.TopLeftCell.Address = photo Then
                With Selection
                    Himage = .Height
                    Limage = .Width
                End With
                Exit Sub
            Else
            End If
        Else
        End If
    Next
     
    End Sub
    Si on peut optimiser dites le moi

    J'ai une incertitude sur
    je ne suis pas certain que la sélection marche dans tous les cas de figure, on doit pouvoir assurer en faisant pointer la sélection sur l'image mieux que cela

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici une fonction générique que j'utilise régulièrement et qui en fonction des arguments passés à celle-ci charge l'image sur le disque et l'insère dans une cellule en redimensionnant l'image. J'ai mis en tête de procédure le lien du code dont je me suis très, très fort inspiré

    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
    Sub InsertPictureInCell(PictureFullName As String, TargetCell As Range)
      ' Arguments
      '   PictureFullName  Nom complet (répertoire + Nom de l'image
      '   TargetCell       Cellule où doit être placée l'image
      '
      Dim oPict As Picture
      Dim t As Single, l As Single, w As Single, h As Single
      Set oPict = Cell.Worksheet.Pictures.Insert(PictureFullName)
      '
      With Cell: t = .Top: l = .Left: w = .Width: h = .Height: End With
      '
      With oPict
      .Width = w
       If .Height > h Then
         .Height = h: .Left = l + (w - .Width) / 2: .Top = t
        Else
         .Left = l: .Top = t + (h - .Height) / 2
       End If
      End With
      Set oPict = Nothing
    End Sub
    Exemple d'une procédure qui l'invoque

    CellName est le nom de la cellule cible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TestInsertPictureInCell_()
      Const Fullname As String = "C:\Users\Toto\appMeal\Picture\Vol au vent.jpg"
      Const CellName As String = "areaPicture"
      InsertPictureInCell Fullname, Range(CellName)
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Copier une image jpg dans une cellule dun DrawGrid
    Par ero-sennin dans le forum Delphi
    Réponses: 13
    Dernier message: 10/07/2007, 15h57
  2. [C#] DataGridView image + texte dans une cellule
    Par nitrous007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/06/2007, 13h08
  3. Donner à une feuille la valeur contenue dans une cellule ?
    Par emilie_pons_2005 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/09/2006, 12h32
  4. Dimension d'un control Image contenu dans une Frame
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/07/2006, 15h55
  5. [HTML][Débutant] Image seule dans une cellule : marges ?
    Par Tententai dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/04/2006, 14h28

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