Créer une matrice avec ou sans forme

Bonjour à tous,

J'aimerai créer une matrice en fonction de coordonnées qui seraient dans un tableau (voir en pj), soit directement dans une matrice (à droite) ou bien en créant automatiquement des formes (à gauche) avec les coordonnées qui seraient dans le tableau et la taille de la forme qui serait une 3ième valeur.

J'arrive bien à créer des formes avec le bon texte et faire varier les tailles, mais je n'arrive pas à les positionner automatiquement dans la matrice. Je ne sais pas si tout ceci est possible avec les formes (cercle+zone texte), j'ai plus d'espoir pour l'autre solution sans les formes.

Merci pour votre aide.

15matrice-shape.xlsx (14.89 Ko)

Bonjour,

A tester. Pour mettre à jour, utilisez le bouton rouge dans la barre d'accès rapide.

Bonjour Eric et merci beaucoup, c'est incroyable.

Je vais essayer de décortiquer et comprendre les subtilités de ton code. Par contre du coup je voulais savoir s'il était possible d'avoir les noms des parties prenantes à coté des bulles ?

En tout cas merci encore.

Je pense que ce serait contre-productif. C'est pour cette raison que j'ai mis l'indice dans la forme.

Je vois, avec plusieurs lignes la lisibilité serait affectée. Par contre quand je renomme partie prenante par une "vrai"nom j’obtiens une erreur

Sur quelle ligne ? En débuggant, la ligne qui apparaît en jaune. Faites une capture d'écran du code.

En bidouillant un peu, j'arrive à récupérer le texte mais effectivement c'est illisible dans une bulle, je n'avait pas prévu initialement de numéroter mes parties prenantes.

Ici : j'ai remplacé partie prenante 1 par ONG par exemple.

2022 05 10 15 21 28 microsoft visual basic pour applications jerem93 2022 05 10 ex p matrice shape

Merci.

Si vous avez un indice derrière "ONG " (avec un espace derrière le G)

             With .TextFrame2
                   .VerticalAnchor = msoAnchorMiddle
                   .WordWrap = msoFalse
                   With .TextRange
                        .Text = Split(NomPartie, "ONG ")(1)
                        .ParagraphFormat.Alignment = msoAlignCenter
                        With .Font
                             .Size = 8
                             .Name = "Arial"
                             .Bold = True
                             .Fill.ForeColor.RGB = CouleurFont
                        End With
                   End With
              End With

Si ce sont des noms propres dans cette colonne, il serait plus judicieux d'insérer une colonne Index et d'utiliser la numérotation pour les formes.

Pour faire référence à cette colonne je dois utiliser la fonction Range ?

For Each Cell In Range("A3:A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row)

Ton tableau est-il un tableau structuré ? Quel est le titre de ta colonne ? Si non, je t'engage à la transformer, comme je l'ai fait.

Par exemple :

    Set AireParties = Range("t_Parties[Index]")

Mais il va falloir décaler l'1 colonne les .offset qui sont plus bas dans le code.

Bonjour Eric,

Est-ce que se serait ça ? qu'en penses tu ? Merci.

Bonjour,

C'est très bien. J'ai seulement modifié le nom de la forme en ajoutant le contenu de la colonne Parties, c'est plus facile à repérer.

Merci beaucoup pour ton aide.

Rechercher des sujets similaires à "creer matrice forme"