XL 2019 Comment créer en VBA des Shapes groupés?

njm504

XLDnaute Nouveau
Bonjour à tous,
je cherche depuis un moment comment réaliser des shapes groupées par exemple 3 rectangles qui sont groupés lorsque la macro a terminé son exécution.

Par avance merci pour votre aide.
 
Solution
Re

Une version plus aboutie
(qui ne groupera que les rectangles de la feuille active)
Code:
Sub test_ok()
Dim tab_SHP() As Variant, i&, shp As Shape
With ActiveSheet
    ReDim tab_SHP(1 To .Shapes.Count)
        For i = 1 To .Shapes.Count
            If .Shapes(i).AutoShapeType = 1 Then ' 1=Rectangle
            tab_SHP(i) = .Shapes(i).Name
            End If
        Next
    Set shp = .Shapes.Range(tab_SHP).Group
End With
shp.Name = "TEST"
End Sub

njm504

XLDnaute Nouveau
L'interligne n'est pas paramétré, il est écrit en dur, c'est le nombre 15 :
VB:
s.Top = deby + (h + 15) * (i - 2)
Et qu'en as-tu pensé ?

Pour ma part, je quitte les racks ici.

Bonne continuation dans ton projet.
Très bonne macro encore plus épurée que la CINQUO et plus précise.
Je te remercie pour le travail réalisé.
Je te souhaite une très bonne soirée et ne pense plus au rack 😂
 

njm504

XLDnaute Nouveau
Re

@njm504
Je posais la question pour savoir si tu avais été curieux lors de tes tests ?
Et que tu avais vu qu'il y avait de l'Intellisense dans la macro ? ;)
Alors j'étais concentré sur un mix de ton travail et celui de Job75 et je t'avoue que je n'ai pas tout décortiqué mais déjà il est beaucoup plus complexe à comprendre. Il se compose d'une fonction différente de l'autre qui permet de paramétrer les Shapes et je ne sais pas pourquoi et comment cela fonctionne mais L et H sont inversés j'ai l'impression que l'on peut faire des plans à la vertical! ce qui serait pas mal pour le plan d'une rangée de face.

Pour les couleurs c'est magique, la macro crée une couleur différente à chaque rangée, trop fort.

Bon j'ai un peu les yeux qui se croisent ce soir je pense que je vais faire une pause. Mais je vais continuer à étudier ton code. Et je te ferais un retour.

Encore merci.
 

Staple1600

XLDnaute Barbatruc
Re

Le petit plus était que tu peux faire ceci
Set s = Forme(msoShapeHexagon, 300, 20, , , , xCol)

Pour être plus clair, tu peux choisir la forme dans le code VBA
(Ca ne sert pas à grand chose dans ton projet, mais cela occupe mes dimanches pluvieux ;))
Tu peux tester avec différentes formes, parfois c'est surprenant)
amusonsnous.png
 

Discussions similaires