Création de forme + nom auto; selon nom de forme et type déjà existante

Bonjour encore à tous,

J'aurais besoin d'aide car je bloque, j'ai beaucoup de forme sur un fichier (à peu près 250 formes). J'ai commencé à les faire manuellement.

J'aimerai en créer de manière plus automatique, leur donner une couleur, une taille, une position bien précise sur l'onglet.. bref jusqu'à là j'y vais.

Cependant, au niveau de leur "numéro" c'est plus compliqué. Exemple, j'ai une forme de type RoundedRectangle nommée "Toggle_Background_45" et aimerai créer le "Toggle_Background_46" grâce à cette macro, mais impossible puisque la macro va automatiquement l'appeler "Toggle_Background_250" ou ici "Toggle_Background_2".

Quelqu’un aurait-il une idée de comment faire pour retrouver la dernière forme avec nom précis crée et faire +1?

merci d'avance beaucoup,

le code :

Sub Créa_Toggle_Background_()

    Lmm = Val(14.1) 'en mm
    Lpx = Lmm * 2.835    'x 1 pixel

    Hmm = Val(4.3)  'en mm
    Hpx = Hmm * 2.835    'x 1 pixel

    PHmm = Val(100) 'en mm
    PHpx = PHmm * 2.835  'x 1 pixel

    PVmm = Val(15)  'en mm
    PVpx = PVmm * 2.835  'x 1 pixel

    With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, PHpx, PVpx, Lpx, Hpx)
        .Name = "Toggle_Background_" & ActiveSheet.Shapes.Count
        .Adjustments.Item(1) = 1
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(13, 163, 38)
        .Fill.Transparency = 0
        .Fill.Solid
        .Line.Visible = msoFalse

    End With

End Sub

Bonsoir,

sans ouvrir votre fichier je vous propose ceci

    Id = Evaluate(ActiveWorkbook.Names("Chrono").Value) + 1
    ActiveWorkbook.Names("Chrono").Value = Id

En fait j'ai créé un "nom" sous Excel Chrono avec une valeur à 0 pour commencer.
Lorsque je crée un Shape, je récupère cette valeur, je lui ajoute 1 et je la ré enregistre, Cela me donne un "Chrono" de création de Shape avec un ID unique pour chacun d'entre eux. Pr rapport à cela et votre demande, pour chaque type de Shape que vous voulez créer, il vous suffit d'avoir un "Chrono" différent, et si ce n'est que pour les "msoShapeRoundedRectangle" alors un seul suffit.

Une fois l'ID calculé, il vous suffit de faire :

.Name = "Toggle_Background_" & Id

@ bientôt

LouReeD

Bonjour Lolopixx, LouReeD,

Deux possibilités:

La première,

Si la feuille est vierge de formes ou si elles sont peu nombreuses. Création de cellules nommées avec le même nom que la forme.

Exemple en cellule A2 nommée Toggle_Background_ Voir menu Excel Formules Définir un nom

Il suffit ensuite dans la macro de création de formes d'ajouter au tout début cette ligne

Range(Names("Toggle_Background_")) = Range(Names("Toggle_Background_")) + 1

Puis pour nommer la forme, de récupérer ce nombre qui s'incrémente à chaque fois que l'on ajoute la même forme.

La deuxième ,

S'il existe déjà beaucoup de formes diverses insérées. De passer par une fonction comme ci dessous

Function Maxi(nom)
Dim Shp As Shape
Num = 0
For Each Shp In ActiveSheet.Shapes
If Shp.Name Like nom & "*" Then Num = WorksheetFunction.Max(CInt(Replace(Shp.Name, nom, "", 1)), Num)
Next
End Function

Elle est appelée en ajoutant la ligne de code en début de ta macro d'ajout de formes. Et en plaçant un Public Num as Integer en haut du module.

Call Maxi("Toggle_Background_")
.Name = "Toggle_Background_" & Num + 1

Ci-dessus pour un nommage par Toggle_Background ou tout autre nom.

Bons tests, bonne continuation.

Bonsoir,

Voici votre fichier modifié :

J'ai fait de grosses formes, le "nom" sous Excel est "Chrono" il est initialisé à 0 actuellement, il vous reste plus qu'à cliquer sur "Allons-y !"

@ bientôt

LouReeD

Bonsoir X Cellus !

LouReeD X Cellus ! Vous êtes au top !

Vos réponses sont complètes. Vous m'avez bien débloqués !! :D

Un grand merci et bonne soirée sur le forum ;)

Bonsoir

Merci pour vos remerciements !

@ bientôt

LouReeD

Bonjour Lolopixx, LouReed,

Merci aussi pour ce retour. Je ne suis qu'au Top 1000 pour l'instant. J'avance doucement...

Rechercher des sujets similaires à "creation forme nom auto type deja existante"