Contraindre l'orientation d'un connecteur-flèche par VBA
3 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
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" a écrit dans le message de groupe de 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
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" <nospam-j.ragni@wanadoo.fr> a écrit dans le message de groupe de discussion :
#S#xmPJNKHA.1236@TK2MSFTNGP05.phx.gbl...
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
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" a écrit dans le message de groupe de 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
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" a écrit dans le message de 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" a écrit dans le message de groupe de 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
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" <michdenis@hotmail.com> a écrit dans le message de
news:8B13DE24-B815-49D9-BAD5-7FD68A28F3B6@microsoft.com...
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" <nospam-j.ragni@wanadoo.fr> a écrit dans le message de groupe de
discussion :
#S#xmPJNKHA.1236@TK2MSFTNGP05.phx.gbl...
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
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" a écrit dans le message de 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" a écrit dans le message de groupe de 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
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" a écrit dans le message de 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" a écrit dans le message de 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" a écrit dans le message de groupe de 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
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" <nospam-j.ragni@wanadoo.fr> a écrit dans le message de
news:exDJbDKNKHA.4004@TK2MSFTNGP04.phx.gbl...
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" <michdenis@hotmail.com> a écrit dans le message de
news:8B13DE24-B815-49D9-BAD5-7FD68A28F3B6@microsoft.com...
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" <nospam-j.ragni@wanadoo.fr> a écrit dans le message de groupe de
discussion :
#S#xmPJNKHA.1236@TK2MSFTNGP05.phx.gbl...
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
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" a écrit dans le message de 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" a écrit dans le message de 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" a écrit dans le message de groupe de 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