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 :

Redimensionner une photo [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Data_Analyst
    Inscrit en
    Décembre 2020
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Data_Analyst

    Informations forums :
    Inscription : Décembre 2020
    Messages : 35
    Par défaut Redimensionner une photo
    Bonjour,

    Je cherche à redimensionner une photo via VBA peu importe la taille de la photo, je souhaiterais que ma photo ait toujours la même taille afin de pouvoir l'afficher correctement sur ma feuille Excel.

    Quelqu'un sait-il comment le faire svp ?

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,

    Vous pouvez redimensionner une photo dans une feuille Excel en utilisant VBA. Voici un exemple de code VBA qui montre comment insérer une image dans une feuille Excel et la redimensionner à une taille spécifique (largeur et hauteur définies) :

    1. **Ouvrez l'éditeur VBA** : Vous pouvez y accéder en appuyant sur `Alt + F11`.
    2. **Ajoutez un nouveau module** : Cliquez avec le bouton droit sur `VBAProject` -> `Insérer` -> `Module`.
    3. **Collez le code suivant dans le module** :

    Code vba : 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
     
    Sub InsertAndResizeImage()
        Dim ws As Worksheet
        Dim imgPath As String
        Dim pic As Picture
        Dim targetWidth As Double
        Dim targetHeight As Double
     
        ' Définissez votre feuille cible
        Set ws = ThisWorkbook.Sheets("Sheet1")
     
        ' Chemin de l'image à insérer
        imgPath = "C:\path\to\your\image.jpg" ' Remplacez par le chemin de votre image
     
        ' Définir la taille cible
        targetWidth = 100 ' Largeur cible en points
        targetHeight = 100 ' Hauteur cible en points
     
        ' Insérer l'image
        Set pic = ws.Pictures.Insert(imgPath)
     
        ' Redimensionner l'image
        With pic
            .LockAspectRatio = msoFalse ' Déverrouille le ratio d'aspect pour redimensionner librement
            .Width = targetWidth
            .Height = targetHeight
     
            ' Optionnel : Déplacer l'image à une position spécifique
            .Top = ws.Range("A1").Top ' Remplacez A1 par la cellule de votre choix
            .Left = ws.Range("A1").Left
        End With
    End Sub

    ### Explications du code

    1. **Variables** :
    - `ws` : Représente la feuille de calcul cible.
    - `imgPath` : Le chemin de l'image à insérer.
    - `pic` : L'objet image inséré.
    - `targetWidth` et `targetHeight` : Les dimensions cibles de l'image en points.

    2. **Définissez la feuille cible** : Le code spécifie la feuille où l'image sera insérée (`Sheet1` dans cet exemple).

    3. **Chemin de l'image** : Modifiez `imgPath` pour qu'il pointe vers l'emplacement de votre image.

    4. **Dimensions cibles** : Ajustez `targetWidth` et `targetHeight` selon vos besoins.

    5. **Insertion et redimensionnement** :
    - L'image est insérée dans la feuille.
    - `LockAspectRatio` est défini sur `msoFalse` pour permettre le redimensionnement sans conserver le ratio d'aspect d'origine.
    - Les dimensions de l'image sont modifiées selon les valeurs spécifiées.

    6. **Positionnement** : L'image est placée à l'emplacement de la cellule `A1`. Vous pouvez modifier cette cellule pour changer l'emplacement de l'image.

    En exécutant ce script, l'image sera insérée et redimensionnée à la taille spécifiée, indépendamment de ses dimensions d'origine.

  3. #3
    Membre averti
    Homme Profil pro
    Data_Analyst
    Inscrit en
    Décembre 2020
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Data_Analyst

    Informations forums :
    Inscription : Décembre 2020
    Messages : 35
    Par défaut @ Thumb down
    Merci pour votre réponse.

    En faite mon souci était .LockAspectRatio = msoTrue

    Du coup, je mettais n'importe quelle valeur pour .Height, ça me mettait toujours la même taille, donc je mettais juste .Width = ... , donc avec .LockAspectRatio = msoFalse, ça fonctionne bien!
    Encore un grand merci !

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

Discussions similaires

  1. [PDF] comment redimensionner une photo envoyée par fichier PDF ?
    Par vincent501 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 26/06/2012, 18h26
  2. redimensionner une photo avec jQuery
    Par bizous dans le forum jQuery
    Réponses: 2
    Dernier message: 19/06/2009, 11h03
  3. Réponses: 6
    Dernier message: 05/06/2008, 15h06
  4. redimensionner une photo dans office picture manager
    Par Tierisa dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/11/2007, 23h38
  5. redimensionner une photo
    Par Tierisa dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2006, 14h57

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