Numéroté des shapes (formes graphiques)

FB2019 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Objectif: numéroté des shapes (oval) automatiquement sur EXCEL

Je voudrai, en vba, afficher une forme ovale à l'intérieur duquel j'affiche un numéro. Ce numéro doit tenir compte des autres formes ovales qui contiennent elles aussi un numéro. Autrement dit, j'affiche des photos dans une feuille et je voudrai les numérotés à l'aide de formes ovales qui s'incrémente au fur et à mesure. Comment faire en sorte avec une macro VBA pour afficher la forme ovale et puis afficher à l'intérieur le n° qui tient compte de son rang d'arrivée?

Exemple: j'ai 10 photos sur une feuille (onglet) et j'ai 3 formes ovales déjà afficher (contenant les N° 1, 2 et 3). Je lance la macro et celle-ci affiche une nouvelle formes ovales (du même style que les autres) et ajoute à l'intérieur le N° incrémenté c'est à dire 4. Si je relance la macro elle affichera une autre forme ovale avec 5 dedans.

Merci d'avance pour l'aide que vous pourriez m'apporter.
A voir également:

3 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

tu trouveras tout ce que tu as besoin ici:

http://boisgontierjacques.free.fr/pages_site/lesimages.htm#Ecriture

1
FB2019 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse rapide.
En effet, j'ai trouvé des pistes pour avancer sur le sujet.
encore merci.
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Pour trouver la shape la dernière incrémentée, tu peux faire ceci:

Sub LireTexteShapes()
Dim s As Object
Dim i As Integer
Dim max As Integer
  For Each s In ActiveSheet.Shapes
    i = i + 1
    Cells(i, 1) = s.Name
    Cells(i, 2) = TexteShape(s)
  max = Application.max(Columns(2))
  Next s
  MsgBox max
End Sub
Function TexteShape(s)
  TexteShape = s.TextFrame.Characters.Text
End Function


il suffit de remplacer le MsgBox par une variable

Voilà

@ + Le Pivert
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour à tous les deux

Une autre possibilité sans passer par les cellules
https://www.cjoint.com/c/ICen3kAr5MB

Cdlmnt
0