Coordonnées d'une forme

Bonjour,
Je cherche a récupérer les coordonnées d'un noeud d'une forme sur xls.
J'ai cherché dans l'aide et il semblerait que l'utilisation de "shape.vertices" puisse répondre à ma question mais je n'ai pas réussi à l'utiliser.
Quelqu'un aurait-il une solution ?

Merci d'avance

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,
    noeud d'une forme sur xls ?
    ? y a pas de noeux sur une forme ?
    ? utilisation de "shape.vertices" ?
    Explique mieux stp.
    A+
    1. Bon, c'est qu'un problème de désignation, désolé.
      Mon but est d'obtenir des coordonnées (x,y) des points caractéristiques d'une forme. Par exemple, quand on trace un rectangle, il est entouré de 8 points permettant de le redimensionner : comment avoir les coordonnées de ces points ?
      En espérant que ce soit plus clair...
  2. Ce n'est pas la même question que celle que j'ai posté sur la poignée d'un connecteur ! La je cherche a identifier les coordonnées des points de début et de fin du connecteur (.BeginConnect et .EndConnect) ... Réellement impossible ?
    1. Contributeur
      (.BeginConnect et .EndConnect)
      C'est quel langage ?
      1. C'est du VBA.
        Ok, je donne du détail

        1- Je crée un connecteur entre les "repères" n°5 (=points d'attache bas d'une forme) de 2 formes Shapes(1) et Shapes (2)

        ActiveSheet.Shapes.AddConnector(msoConnectorCurve, 1, 1, 2,0 20).Select
        Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadOpen
        Selection.ShapeRange.ConnectorFormat.BeginConnect ActiveSheet.Shapes(1), 5
        Selection.ShapeRange.ConnectorFormat.EndConnect ActiveSheet.Shapes(2), 5

        2- Je souhaite récupérer les coordonnées de ces points d'attache :
        - soit directement les coordonnées de début et de fin du connecteur
        - soit les coordonnées des "repères" des Shapes

        J'ai essayé de regarder ce que la propriété Shape.Vertices peut m'apporter, et je sens que c'est exactement ce qu'il me faut. Voici le code que j'ai testé (fortement inspiré de ce qu'on trouve sur l'aide VBA) ... mais ça ne fonctionne pas (il bloque sur la ligne x1 = vertArray(1,1) ...):

        Sub Coordonnées()

        Dim vertArray As Variant
        Dim x1 As Single, y1 As Single

        vertArray = Feuil1.Shapes(1).Vertices
        x1 = vertArray(1, 1)
        y1 = vertArray(1, 2)
        MsgBox "First vertex coordinates: " & x1 & ", " & y1

        End Sub


        --> Sais tu comment utiliser Shape.Vertices ?
        --> Aurais tu une autre idée ?

        Merci
        1. Contributeur
          J'ai jamais eu l'occasion de voir ce sujet
          Toutefois, ta variable semble être un tableau et nécessite une assignation...
          essaye avec,
              Set vertArray = Feuil1.Shapes(1).Vertices
          1. Contributeur
            Quel version d'Excel ? J'ai essayer sur le 2007 mais ça plante.
            1. C'est excel 2010.

              J'ai essayé d'assigner comme tu le proposes mais ça ne fonctionne pas non plus ...
          2. Contributeur
            c'est disponible aussi sur le 2007
            Il semble qu'il faut initialiser Vertices quelque part mais comment ?
            Pour la ligne Set vertArray = Feuil1.Shapes(1).Vertices
            Il faudra vraisemblablement Set mais Vertices est Empty c'est à dire non initialiser (contraire de vide)
            En parcourant l'aide
            Cet exemple montre comment créer une courbe dont la description géométrique est la même que la forme 1 dans myDocument. La forme 1 doit contenir 3n+1 sommets pour que l'exemple fonctionne.

            Visual Basic pour Applications 
            Set myDocument = Worksheets(1)
            With myDocument.Shapes
            .AddCurve .Item(1).Vertices
            End With


            Je trouve pas de solution pour le moment et n'ai plus le temps maintenant.
            J'y reviendrais.
            A+