Contraindre l'orientation d'un connecteur-flèche par VBA

Le
manbas
Bonjour à tous
Par macro je crée une zone de texte reliée à un connecteur en forme de
flèche. Les shapes sont renommées (avec un compteur) à chaque procédure,
afin de permettre la ré-utilisation de la macro.
Je ne veux que des connecteurs verticaux.
Néanmoins, mes connecteurs se dirigent tous vers le haut, sauf quand je
place la zone de texte en haut de la page. Pourtant j'ai besoin de zones de
texte plus au centre de la feuille.
Je n'ai pas trouvé la solution:
Selection.ShapeRange.Item("F").Height = 180
Selection.ShapeRange.Item("F").Width = 0#
Selection.ShapeRange.Item("F").Flip msoFlipVertical ' ne sert strictement à
rien dans la macro.
Est-ce quelqu'un peut m'aider SVP?
Merci par avance pour votre réponse
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #20134941
Bonjour Manbas,

Voici un petit exemple :

Refais 2 fois la procédure. La deuxième fois,
remplace msoConnectorCurve par msoFlipVertical
tu devrais voir la différence.

'-----------------------------------------------
Sub Créer_Les_Shapes()
Set myDocument = Worksheets(1)
Set S = myDocument.Shapes
Set firstRect = S.AddShape(msoShapeRectangle, 100, 50, 200, 100)
Set secondRect = S.AddShape(msoShapeRectangle, 100, 300, 200, 100)
Set c = S.AddConnector(msoConnectorCurve, 0, 0, 0, 0)
With c.ConnectorFormat
.BeginConnect firstRect, 1
.EndConnect secondRect, 1
End With
End Sub
'-----------------------------------------------




"manbas" #S#
Bonjour à tous
Par macro je crée une zone de texte reliée à un connecteur en forme de
flèche. Les shapes sont renommées (avec un compteur) à chaque procédure,
afin de permettre la ré-utilisation de la macro.
Je ne veux que des connecteurs verticaux.
Néanmoins, mes connecteurs se dirigent tous vers le haut, sauf quand je
place la zone de texte en haut de la page. Pourtant j'ai besoin de zones de
texte plus au centre de la feuille.
Je n'ai pas trouvé la solution:
Selection.ShapeRange.Item("F").Height = 180
Selection.ShapeRange.Item("F").Width = 0#
Selection.ShapeRange.Item("F").Flip msoFlipVertical ' ne sert strictement à
rien dans la macro.
Est-ce quelqu'un peut m'aider SVP?
Merci par avance pour votre réponse
manbas
Le #20135231
Bonjour MichDenis
Merci pour ta réponse. Je ne peux pas l'adapter.
Le plus simple c'est que je te montre un extrait du code.
Je veux que la flèche rattachée au bas de la zone de texte soit orientée
vers la ligne 20. Le connecteur se dirige invariablement vers le haut.

Sub essai()
Range("C20").select
Dim dH, dG
dH = ActiveCell.Offset(-10, 0).Top
dG = ActiveCell.Offset(-10, 0).Left
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, dG, dH, 10,
10).Select
With Selection
.Characters.Text = "" 'commentaire
.AutoSize = True 'taille adapté au texte
.Locked = False
.LockedText = False
End With
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Dim ancienD, nouveauD, ancienF, nouveauF
ancienD = Selection.Name
nouveauD = "D"
Selection.Name = nouveauD
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 70, 70, 1.5,
12#).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Selection.Locked = False
'place la forme au-dessUs de la ligne placée sur la ligne 20
Selection.ShapeRange.ConnectorFormat.BeginConnect ActiveSheet.Shapes("D"), 3
'point de connection milieu face inf
[A2].Value = [A2].Value + 1
ancienF = Selection.Name
nouveauF = "F"
Selection.Name = nouveauF
Selection.ShapeRange.Item("F").Left = ActiveCell.Left
Selection.ShapeRange.Item("F").Top = ActiveCell.Top
Selection.ShapeRange.Item("F").Height = 100
Selection.ShapeRange.Item("F").Width = 0#
Selection.ShapeRange.Item("F").Flip msoFlipVertical

Selection.Name = "F" & [A2].Value 'la flèche est renommée F" & [A2].Value
ActiveSheet.Shapes("D").Select
Selection.Name = "D" & [A2].Value 'la zone de texte est renommée D" &
[A2].Value
end sub

"michdenis" news:
Bonjour Manbas,

Voici un petit exemple :

Refais 2 fois la procédure. La deuxième fois,
remplace msoConnectorCurve par msoFlipVertical
tu devrais voir la différence.

'-----------------------------------------------
Sub Créer_Les_Shapes()
Set myDocument = Worksheets(1)
Set S = myDocument.Shapes
Set firstRect = S.AddShape(msoShapeRectangle, 100, 50, 200, 100)
Set secondRect = S.AddShape(msoShapeRectangle, 100, 300, 200, 100)
Set c = S.AddConnector(msoConnectorCurve, 0, 0, 0, 0)
With c.ConnectorFormat
.BeginConnect firstRect, 1
.EndConnect secondRect, 1
End With
End Sub
'-----------------------------------------------




"manbas" discussion :
#S#
Bonjour à tous
Par macro je crée une zone de texte reliée à un connecteur en forme de
flèche. Les shapes sont renommées (avec un compteur) à chaque procédure,
afin de permettre la ré-utilisation de la macro.
Je ne veux que des connecteurs verticaux.
Néanmoins, mes connecteurs se dirigent tous vers le haut, sauf quand je
place la zone de texte en haut de la page. Pourtant j'ai besoin de zones
de
texte plus au centre de la feuille.
Je n'ai pas trouvé la solution:
Selection.ShapeRange.Item("F").Height = 180
Selection.ShapeRange.Item("F").Width = 0#
Selection.ShapeRange.Item("F").Flip msoFlipVertical ' ne sert strictement
à
rien dans la macro.
Est-ce quelqu'un peut m'aider SVP?
Merci par avance pour votre réponse



manbas
Le #20136621
Voici la solution de contournement que j'ai trouvé (en vba):
-grouper les deux formes
-les faire se déplacer de la distance désirée avec incrementTop
-dissocier les deux formes

Merci. A bientôt

"manbas" news:
Bonjour MichDenis
Merci pour ta réponse. Je ne peux pas l'adapter.
Le plus simple c'est que je te montre un extrait du code.
Je veux que la flèche rattachée au bas de la zone de texte soit orientée
vers la ligne 20. Le connecteur se dirige invariablement vers le haut.

Sub essai()
Range("C20").select
Dim dH, dG
dH = ActiveCell.Offset(-10, 0).Top
dG = ActiveCell.Offset(-10, 0).Left
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, dG, dH, 10,
10).Select
With Selection
.Characters.Text = "" 'commentaire
.AutoSize = True 'taille adapté au texte
.Locked = False
.LockedText = False
End With
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Dim ancienD, nouveauD, ancienF, nouveauF
ancienD = Selection.Name
nouveauD = "D"
Selection.Name = nouveauD
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 70, 70, 1.5,
12#).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Selection.Locked = False
'place la forme au-dessUs de la ligne placée sur la ligne 20
Selection.ShapeRange.ConnectorFormat.BeginConnect ActiveSheet.Shapes("D"),
3 'point de connection milieu face inf
[A2].Value = [A2].Value + 1
ancienF = Selection.Name
nouveauF = "F"
Selection.Name = nouveauF
Selection.ShapeRange.Item("F").Left = ActiveCell.Left
Selection.ShapeRange.Item("F").Top = ActiveCell.Top
Selection.ShapeRange.Item("F").Height = 100
Selection.ShapeRange.Item("F").Width = 0#
Selection.ShapeRange.Item("F").Flip msoFlipVertical

Selection.Name = "F" & [A2].Value 'la flèche est renommée F" & [A2].Value
ActiveSheet.Shapes("D").Select
Selection.Name = "D" & [A2].Value 'la zone de texte est renommée D" &
[A2].Value
end sub

"michdenis" news:
Bonjour Manbas,

Voici un petit exemple :

Refais 2 fois la procédure. La deuxième fois,
remplace msoConnectorCurve par msoFlipVertical
tu devrais voir la différence.

'-----------------------------------------------
Sub Créer_Les_Shapes()
Set myDocument = Worksheets(1)
Set S = myDocument.Shapes
Set firstRect = S.AddShape(msoShapeRectangle, 100, 50, 200, 100)
Set secondRect = S.AddShape(msoShapeRectangle, 100, 300, 200, 100)
Set c = S.AddConnector(msoConnectorCurve, 0, 0, 0, 0)
With c.ConnectorFormat
.BeginConnect firstRect, 1
.EndConnect secondRect, 1
End With
End Sub
'-----------------------------------------------




"manbas" discussion :
#S#
Bonjour à tous
Par macro je crée une zone de texte reliée à un connecteur en forme de
flèche. Les shapes sont renommées (avec un compteur) à chaque procédure,
afin de permettre la ré-utilisation de la macro.
Je ne veux que des connecteurs verticaux.
Néanmoins, mes connecteurs se dirigent tous vers le haut, sauf quand je
place la zone de texte en haut de la page. Pourtant j'ai besoin de zones
de
texte plus au centre de la feuille.
Je n'ai pas trouvé la solution:
Selection.ShapeRange.Item("F").Height = 180
Selection.ShapeRange.Item("F").Width = 0#
Selection.ShapeRange.Item("F").Flip msoFlipVertical ' ne sert strictement
à
rien dans la macro.
Est-ce quelqu'un peut m'aider SVP?
Merci par avance pour votre réponse






Publicité
Poster une réponse
Anonyme