Nommer suite de shape

Noopy123

XLDnaute Junior
Bonjour,

J'ai une suite de shape rectangle qui se créé selon le code suivant :
VB:
x = ActiveCell.Row               ' définit la ligne de la cellule active
y = ActiveCell.Column           ' définit la colonne de la cellule active
For L = x To x + 5              ' 8 est le nombre de rectangles en X
    For C = y To y + 5          ' 5 est le nombre de rectangles en Y
        With Cells(L, C)
            ActiveSheet.Shapes.AddShape(msoShapeRectangle, .Left, .Top, .Width, .Height).Select
            Selection.ShapeRange.ShapeStyle = msoShapeStylePreset1
              
             End With
        
    Next C
Next L

J’aimerais pourvoir nommer les rectangles créés ,via ce code, avec la cellules dans lequel ils paraissent (sachant que la cellule est aléatoire en fonction de la cellule sélectionnée , ... Mais impossible de trouver la solution
Sinon a Default de leur donner les nom 1,2,3,4....

Merci par avance pour votre aide
 

Staple1600

XLDnaute Barbatruc
Re

Dans ce cas, il suffisait d'adapter une de mes propositions
VB:
Sub Encadrez_Et_Nommez_Moi()
Dim c, shp
If TypeName(Selection) = "Range" Then
With ActiveSheet
    For Each c In Selection
    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)
    shp.Name = "Rect_" & c.Address(0, 0)
    Next
End With
End If
End Sub
NB: Si tu joignais un fichier exemple, et plus d'explications concrètes, on avancerait plus vite ;)
 

Staple1600

XLDnaute Barbatruc
Re

•>Noopy123 (AKA Leeya)
Juste pour ta gouverne...:rolleyes:
L'usage quand on multiposte sa question, c'est de le signaler simplement
(ou mieux avec un lien)
Et si tu veux connaitre, l'origine de cet usage, voir ici:
 

Staple1600

XLDnaute Barbatruc
Re

•>Noopy123
Pas de réponse à la question 1) ?
:rolleyes:

Pour le reste: 6x6=36 ;)
VB:
Sub Grille_Six_par_Six()
Dim c, 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
With ActiveSheet
    For Each c In Grille
    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)
    shp.Name = "Rect_" & c.Address(0, 0)
    Next
End With
End If
End Sub
 

Noopy123

XLDnaute Junior
Non rien à repondre à 1), mea culpa ^^

Le code est top mais il ne correspond qu'à un seul cas de figure ( ce dessous l'userform utilisé avec les differentes formes crées ( des fois c'est 6*6, d'autre c'est 5*2, ...)
1587903186625.png

Le but est de faire apparaître dans l’ordre voulu par l'utilisateur les formes sélectionnée via optionbutton. C'est pour cela que je voulais rebondir sur le code cité dans le premier post car avec celui ci j'arrive à creer les formes presentées. Maintenant il ne me reste plus qu'a reussir à leur donner un nom ^^
 

Noopy123

XLDnaute Junior
Je suis en train de m'approprier ton code, par contre j'ai une petite question. J'aimerais redimensionner mes colonnes une fois les shapes créées. J'ai ajouté un placement xlFreeFloating afin que mes shapes ne bougent pas quand je redimensionne mes colonnes mais ca ne marche pas
Voila le code que j'ai voulu faire :
VB:
If TypeName(Selection) = "Range" Then
Set Grille = Selection.Item(1).Resize(2, 5)
Grille.RowHeight = 50: Grille.ColumnWidth = 6
With ActiveSheet
    For Each c In Grille
    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)
    shp.Name = "Rect_" & c.Address(0, 0)
    shp.Placement = xlFreeFloating
Set Grille = Selection.Item(1).Resize(2, 5)
Grille.RowHeight = 50: Grille.ColumnWidth = 4.91
    Next
End With
End If
 

Discussions similaires

Réponses
0
Affichages
143
Réponses
1
Affichages
164

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 879
Membres
103 009
dernier inscrit
dede972