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 ?
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 ?
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.
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 !
Partager