Numéroté des shapes (formes graphiques)

Fermé
FB2019 Messages postés 7 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 3 mars 2019 - Modifié le 3 mars 2019 à 15:03
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 - 4 mars 2019 à 14:56
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.

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
3 mars 2019 à 16:43
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 mercredi 20 février 2019 Statut Membre Dernière intervention 3 mars 2019
3 mars 2019 à 18:16
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
3 mars 2019 à 18:24
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 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
4 mars 2019 à 14:56
Bonjour à tous les deux

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

Cdlmnt
0