Coordonnées d'une forme

olivlechti Messages postés 11 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
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

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    noeud d'une forme sur xls ?
    ? y a pas de noeux sur une forme ?
    ? utilisation de "shape.vertices" ?
    Explique mieux stp.
    A+
    0
    1. olivlechti Messages postés 11 Statut Membre
       
      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...
      0
  2. olivlechti Messages postés 11 Statut Membre
     
    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 ?
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    (.BeginConnect et .EndConnect)
    C'est quel langage ?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. olivlechti Messages postés 11 Statut Membre
     
    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
    0
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Quel version d'Excel ? J'ai essayer sur le 2007 mais ça plante.
    0
    1. olivlechti Messages postés 11 Statut Membre
       
      C'est excel 2010.

      J'ai essayé d'assigner comme tu le proposes mais ça ne fonctionne pas non plus ...
      0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0