Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Image dans shape

  • Initiateur de la discussion Initiateur de la discussion Noopy123
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Noopy123

XLDnaute Junior
Bonjour,

Est-il possible d'ajouter une image dans une shape sélectionnée ?
J'ai un fichier qui créé un nombre aléatoire de rectangle et j'aimerais mettre une image en fond dans les rectangles que j'ai préalablement sélectionné. Le top serait de le faire via un double clique sur la cellule sélectionnée 🙂

Merci par avance
 
Bonjour job75

•>Noop123
J'ai complété mon test
(toujours sur une feuille vierge, et cette fois-ci, tu peux lancer plusieurs fois de suite la macro PreTest_II)
test OK sur Excel 2013
(La mise en forme de la shape "test" est appliquée sur les 4 formes à droite de celle-ci quand on clique sur une de ces 4 formes)
VB:
Sub PreTest_II()
Dim shp As Shape, c As Range, p As Range, x As Range, i%, vShps()
Set c = [C2]: c.RowHeight = 100: Set p = c.Offset(, 2): Randomize 1600
With ActiveSheet
.DrawingObjects.Delete
Set shp = .Shapes.AddShape(1, c.Left, c.Top, c.Width, c.Height)
y = Application.RandBetween(0, 8)
shp.Fill.PresetTextured Array(4, 10, 5, 22, 16, 8, 14, 19, 18)(y)
shp.Name = "test": vShps = Array(3, 15, 14, 23)
For i = 0 To 3
Set x = p(1, (i + 1) * 2)
Set shp = .Shapes.AddShape(vShps(i), x.Left, x.Top, x.Width, x.Height)
shp.Fill.ForeColor.SchemeColor = vShps(i)
shp.OnAction = "Test_II"
Next
End With
End Sub

Sub Test_II()
With ActiveSheet
 .Shapes("test").PickUp
 .Shapes(Application.Caller).Apply
End With
End Sub
 
Re

Le mode opératoire est le suivant
1) Dans un classeur vierge, tu inséres un module standard dans lequel tu copies/colles le code du message#16
2) Tu lances la macro PreTest_II
Puis tu cliques sur une des 4 formes à droite de "test"
Ça doit fonctionner.
(Le préfixe de ta discussion indique XL 2013, or je suis aussi sur XL 2013)
 

Je viens d'essayer et encore le même message d'erreur 😳😵
 
Bonjour le fil, Noopy123, job75

Avec ceci, si la sélection de shapes est multiple, le changement de format s'applique sur toutes les formes sélectionnées
(Rappel: dans cet exemple, la texture présente sur "test" remplace une image, mais le résultat est le même si "test" contient une image)
le mode opératoire pour tester est différent
1) Lancer PreTest_III
Puis sélectionner une ou plusieurs shapes (autre que celle nommée "test")
et lancer ensuite (à partir de VBE) la macro Test_III
Code:
Sub PreTest_III()
Dim shp As Shape, c As Range, p As Range, x As Range, i%, vShps()
Set c = [C2]: c.RowHeight = 100: Set p = c.Offset(, 2): Randomize 1600
With ActiveSheet
.DrawingObjects.Delete
Set shp = .Shapes.AddShape(1, c.Left, c.Top, c.Width, c.Height)
y = Application.RandBetween(0, 8)
shp.Fill.PresetTextured Array(4, 10, 5, 22, 16, 8, 14, 19, 18)(y)
shp.Name = "test": vShps = Array(3, 15, 14, 23)
For i = 0 To 3
Set x = p(1, (i + 1) * 2)
Set shp = .Shapes.AddShape(vShps(i), x.Left, x.Top, x.Width, x.Height)
shp.Fill.ForeColor.SchemeColor = vShps(i)
Next
End With
End Sub

Sub Test_III()
'Dans cette version, le changement s'appliquera sur les shapes sélectionnées
'soit une seule, soit sélection multiple
Dim shp As Shape
With ActiveSheet
 .Shapes("test").PickUp
    For Each shp In ActiveWindow.Selection.ShapeRange
    shp.Apply
    Next
End With
End Sub
PS: job75
Bienvenue au club des XLDdiens ostracisés ou parfois invisibles...
C'est vrai que ce n'est pas agréable (j'en sais quelque chose) 😉
 


Je viens d'essayer ce code mais rien ne se passe. J'ai mis Test_III dans un commandButton pour declancher la copie mais rien non plus. Sais-tu où est mon erreur ?
 
Re

Si, il y a changement sinon pourquoi aurais-je posté ce nouveau code?
🙄
Relire attentivement le mode opératoire du message#22
(et faire exactement tout ce qu'on y lit)

NB: Je te rappelle qu'hier tu disais que cela ne fonctionnait pas
puis O surprise, ce matin, tu écris
C'est bon ça marche bien. Je ne sais pas ce que j'ai fais comme bêtise hier soir mais en tout cas c'est bon ça marche nickel
😉
 
Finalement, j'ai trouvé un truc hyper simple qui pour l'instant marche :
J'ai crée un Bouton et je lui ai affecté cette macro et ma photo se met bien en arrière plan de mes formes séléctionnées
VB:
Sub Bouton2_Cliquer()
Selection.ShapeRange.Fill.UserPicture "C:\Users\utilisateur\Desktop\PHOTO \3.jpg"
End Sub

Par contre via ce code, si pas de cellule séléctionné ça plante. Est-il possible d'avoir un msg box si aucune shape séléctionnées et faire un exit sub ?
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Bloccage Excel
Réponses
1
Affichages
332
Réponses
3
Affichages
205
Réponses
12
Affichages
383
Réponses
14
Affichages
541
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…