Tester les connection d'un AutoShape

Le
Luc Monnet
Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter a
une forme
..
End If
End With
End If
End With
Next
End With
End Sub
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 #18730541
Tiré essentiellement de l'aide d'excel

Crée 2 rectangles réunis par un connecteur
'----------------------------------------
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, 300, 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
'----------------------------------------

'Comment vérifié le type de la shape auquel
est connecté le connecteur Shapes3
en plus du .EndConnectedShape on aurait pu ajouter
.beginConnectedShape
'----------------------------------------
Sub Vérifier_Connecteur_EstcConnecté_autre_Connecteur()

Set myDocument = Worksheets(1)
With myDocument.Shapes(3)
If .Connector Then
With .ConnectorFormat
If .EndConnected Then
oldEndConnSite = .EndConnectionSite
Set oldEndConnShape = .EndConnectedShape
If oldEndConnShape.Connector Then
'si oui, il est branché à un autre connecteur
MsgBox "Oui le connecteur " & .Parent.Name & _
"est connecté à un autre connecteur " & oldEndConnShape.Name
Else
MsgBox oldEndConnShape.Name
End If
End If
End With
End If
End With
End Sub
'----------------------------------------




"Luc Monnet"
Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter a
une forme
........
End If
End With
End If
End With
Next
End With
End Sub
Luc Monnet
Le #18731321
Bonjour et merci pour ta contribution,

Mais je ne veux pas faire des tests sur les connecteurs (Déja fait dans mon
code).

Je voudrais faire des tests sur les objets AutoShape (Forme Automatique
different des Flèches qui sont eux aussi des formes automatiques) :
Exemple: Controler que l'objet Autoshape (Organigramme : Procédé:
FormAuto 13) est attacher par UN, DEUX ou TROIS objet AutoShape de type
Connector (Fleche).
Merci d'avance.

"michdenis"
Tiré essentiellement de l'aide d'excel

Crée 2 rectangles réunis par un connecteur
'----------------------------------------
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, 300, 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
'----------------------------------------

'Comment vérifié le type de la shape auquel
est connecté le connecteur Shapes3
en plus du .EndConnectedShape on aurait pu ajouter
.beginConnectedShape
'----------------------------------------
Sub Vérifier_Connecteur_EstcConnecté_autre_Connecteur()

Set myDocument = Worksheets(1)
With myDocument.Shapes(3)
If .Connector Then
With .ConnectorFormat
If .EndConnected Then
oldEndConnSite = .EndConnectionSite
Set oldEndConnShape = .EndConnectedShape
If oldEndConnShape.Connector Then
'si oui, il est branché à un autre connecteur
MsgBox "Oui le connecteur " & .Parent.Name & _
"est connecté à un autre connecteur " &
oldEndConnShape.Name
Else
MsgBox oldEndConnShape.Name
End If
End If
End With
End If
End With
End Sub
'----------------------------------------




"Luc Monnet" discussion :

Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type
AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet
AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter a
une forme
........
End If
End With
End If
End With
Next
End With
End Sub



Fredo P.
Le #18732311
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" news:
Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type


AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet


AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter a
une forme
........
End If
End With
End If
End With
Next
End With
End Sub




Luc Monnet
Le #18732641
Alors la, je dis chapeau monsieur.

Merci pour ton exemple (Code), je vais l'étudier pour voir si je peux
l'exploiter.
Pour cela il me faut je pense deja bien comprendre la fonction
"Application.Caller"

Merci d'avance si tu as d'autres exemples.

"Fredo P." de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" news:
Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type


AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet


AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter a
une forme
........
End If
End With
End If
End With
Next
End With
End Sub








Luc Monnet
Le #18732791
Tu touveras ci-joint le fichier sur lequel j'essai de faire des tests:
http://cjoint.com/?cymAw8Kt34
Merci.

"Fredo P." de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" news:
Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type


AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet


AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter a
une forme
........
End If
End With
End If
End With
Next
End With
End Sub








michdenis
Le #18733831
Tu mets ça dans un module standard du classeur que tu as mis en ligne.

En feuil1, tu auras :
la colonne A : Nom du connecteur
La colonne B : Nom de la "autoshape" du début du connecteur
la colonne B : Nom de la "autoshape" de la fin du connecteur
s'il y a lieu.

P.S - Attention s'il y a des coupures de lignes de code par
le service de messagerie.

'------------------------------------
Sub test()
Dim Sh As Worksheet, Nb As Integer, A As Integer
Dim conFormat As ConnectorFormat, B As Integer
Set Sh = Worksheets("Feuil1")
Nb = Sh.Shapes.Count

On Error Resume Next
With Sh
.Range("A1") = "Nom du Connecteur"
.Range("B1") = "Nom de l'objet source"
.Range("C1") = "Nom de l'objet destination"
With .Range("A1:C1")
.Font.Color = vbRed
.Font.Bold = True
.Font.Underline = True
End With
With .Shapes
B = 1
For A = 1 To Nb
With .Item(A)
If .Connector = msoTrue Then
With .ConnectorFormat
If .Item(.BeginConnectedShape.Name).Type = msoAutoShape Then
Sh.Range("B" & B) = .BeginConnectedShape.Name
End If
If .Item(.EndConnectedShape.Name).Type = msoAutoShape Then
Sh.Range("C" & B) = .EndnConnectedShape.Name
End If
If Application.CountA(Sh.Range("B" & B & ":C" * B)) > 0 Then
Sh.Range("A" & B) = .Parent.Name
B = B + 1
End If
End With
End If
End With
Next
End With
.Range("A1:C1").EntireColumn.AutoFit
End With
End Sub
'------------------------------------



"Luc Monnet" #
Tu touveras ci-joint le fichier sur lequel j'essai de faire des tests:
http://cjoint.com/?cymAw8Kt34
Merci.

"Fredo P." de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" news:
Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type


AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet


AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter a
une forme
........
End If
End With
End If
End With
Next
End With
End Sub








Luc Monnet
Le #18733901
Formidable, je te remercie pour ce code que je vais étudier a fond pour
l'adapter a mon programme.
Pour information je lire une structure d'autoshape, la transformer en VML ou
HTML et la mettre en ligne.

Encore une fois merci pour ton aide.

"michdenis" %
Tu mets ça dans un module standard du classeur que tu as mis en ligne.

En feuil1, tu auras :
la colonne A : Nom du connecteur
La colonne B : Nom de la "autoshape" du début du connecteur
la colonne B : Nom de la "autoshape" de la fin du connecteur
s'il y a lieu.

P.S - Attention s'il y a des coupures de lignes de code par
le service de messagerie.

'------------------------------------
Sub test()
Dim Sh As Worksheet, Nb As Integer, A As Integer
Dim conFormat As ConnectorFormat, B As Integer
Set Sh = Worksheets("Feuil1")
Nb = Sh.Shapes.Count

On Error Resume Next
With Sh
.Range("A1") = "Nom du Connecteur"
.Range("B1") = "Nom de l'objet source"
.Range("C1") = "Nom de l'objet destination"
With .Range("A1:C1")
.Font.Color = vbRed
.Font.Bold = True
.Font.Underline = True
End With
With .Shapes
B = 1
For A = 1 To Nb
With .Item(A)
If .Connector = msoTrue Then
With .ConnectorFormat
If .Item(.BeginConnectedShape.Name).Type =
msoAutoShape Then
Sh.Range("B" & B) = .BeginConnectedShape.Name
End If
If .Item(.EndConnectedShape.Name).Type =
msoAutoShape Then
Sh.Range("C" & B) = .EndnConnectedShape.Name
End If
If Application.CountA(Sh.Range("B" & B & ":C" * B))
> 0 Then
Sh.Range("A" & B) = .Parent.Name
B = B + 1
End If
End With
End If
End With
Next
End With
.Range("A1:C1").EntireColumn.AutoFit
End With
End Sub
'------------------------------------



"Luc Monnet" discussion :
#
Tu touveras ci-joint le fichier sur lequel j'essai de faire des tests:
http://cjoint.com/?cymAw8Kt34
Merci.

"Fredo P." de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" news:
Bonjour,

J'aimerais savoir s'il est possible de tester si un objet de type


AutoShape
est connecter a un objet de type Connector.
Voici un debut de code ou j'aimerais faire des tests sur l'objet


AutoShape:

Sub TestShapeConnected()
Set myDocument = Worksheets(1)
With myDocument.Shapes
For i = 1 To .Count
With .Item(i)
If .AutoShapeType = "61" Then 'Si c'est un AutoShape

' Ajout ici le test de verification d'un ou plusieurs
connections

End If
If .Connector Then 'Si c'est un Connecteur
With .ConnectorFormat
If .BeginConnected Then 'S'il est connecter
a
une forme
........
End If
End With
End If
End With
Next
End With
End Sub











Fredo P.
Le #18735631
--
Fredo P.
"Luc Monnet" news:%
Alors la, je dis chapeau monsieur.

Merci pour ton exemple (Code), je vais l'étudier pour voir si je peux
l'exploiter.
Pour cela il me faut je pense deja bien comprendre la fonction
"Application.Caller"


Elle renvoie le nom de l'objet de commande de à la routine
Publicité
Poster une réponse
Anonyme