XL 2013 Image dans shape

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
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

•>Noopy123
Il serait judicieux de mettre un lien vers ta précédente discussion puisque celle-ci en est est la suite, non ?
Et pourquoi ne pas directement insérer les images dans les cellules ?
(Les fusionnées et les non-fusionnées ;))
 

Noopy123

XLDnaute Junior
Je n'ai pas réussi à trouver mon bonheur à droite car à chaque fois c'est sur une plage de donnée définie
En gros, je veux faire dire à mon code :
Pour chaque shape séléctionné, mettre cette photo en fond.
C'est surtout la partie pour chaque shape séléctionné qui me pose problème parce que pour le reste je pensais passer par l'enregistreur de macro
 

Staple1600

XLDnaute Barbatruc
Re

J'ai bien compris

NB: Il n'y a pas que la droite, il y haut le coin en haut à droite...;)

VB:
Sub Grille_POUR_TEST_II()
Dim c As Range, m As Range, Grille As Range, shp As Shape
If TypeName(Selection) = "Range" Then
Set Grille = Selection.Item(1).Resize(6, 6)
Grille.RowHeight = 50: Grille.ColumnWidth = 4.86
Grille(6, 4).Resize(, 3).Merge: Grille(4, 1).Resize(, 2).Merge
Grille(4, 3).Resize(, 2).Merge: Grille(4, 5).Resize(, 2).Merge
Grille(6, 1).Resize(, 3).Merge: Grille(2, 2).Resize(, 2).Merge
With ActiveSheet
For Each c In Grille
If c.MergeCells Then
Set m = c(1).MergeArea
Set shp = .Shapes.AddShape(1, m.Left, m.Top, m.Width, m.Height)
shp.Line.ForeColor.RGB = RGB(192, 0, 0): shp.Fill.ForeColor.RGB = RGB(255, 255, 255)
Else
Set shp = .Shapes.AddShape(1, c.Left, c.Top, c.Width, c.Height)
shp.Line.ForeColor.RGB = RGB(192, 0, 0): shp.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
shp.Name = "img_" & shp.ZOrderPosition
shp.OnAction = "Test"
Next
End With
End If
End Sub
Sub Test()
Pict = Application.GetOpenFilename("Fichiers Images ,*.gif;*.jpg;*.png")
If Pict <> False Then
ActiveSheet.Shapes(Application.Caller).Fill.UserPicture Pict
End If
End Sub
 

Noopy123

XLDnaute Junior
Merci pour ton retour,

L'idée est bonne mais j'aimerais que les choses se fasse indépendamment. C'est à dire dans un premier temps l’enchaînement des formes se fait. Une fois le plan créé, l’utilisateur clique sur la forme qu'il veut et là il met sa photo.
D'où le fait que j'aimerais savoir comment "coder" Pour chaque shape sélectionnées dans le document.
 

Staple1600

XLDnaute Barbatruc
Re

Vois ce que ce petit test t'inspire*
(A tester sur une feuille vierge)
1) Lancer la macro: PreTest
2) Clique ensuite sur le rectangle bleu.
(NB: Si la Shape "test" contenait une image, l'effet serait le même)
VB:
Sub PreTest()
Dim shp As Shape, shpB As Shape, c As Range, p As Range
Set c = [C3]
c.RowHeight = 100
Set p = c.Offset(, 5)
With ActiveSheet
Set shp = .Shapes.AddShape(1, c.Left, c.Top, c.Width, c.Height)
shp.Fill.PresetTextured msoTextureFishFossil
shp.Name = "test"
Set shpB = .Shapes.AddShape(1, p.Left, p.Top, p.Width, p.Height)
shpB.OnAction = "Test_II"
End With
End Sub

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

*: c'est donc une piste à suivre, pas une solution 100% finalisée
Donc inutile de me sortir ce genre de réponse ;)
Yes, mais ce n'est pas vraiment le résultat cherché
 

Noopy123

XLDnaute Junior
*: c'est donc une piste à suivre, pas une solution 100% finalisée
Donc inutile de me sortir ce genre de réponse ;)
Tu es tatillon, je ne vais plus comment répondre, tu as à redire sur toutes mes réponses :p

Revenons à nos moutons ^^
Quand je clique que la forme bleue voila ce qui apparaît :/
1588010354704.png
 

Discussions similaires

Réponses
10
Affichages
519