Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester les connection d'un AutoShape

8 réponses
Avatar
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

8 réponses

Avatar
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" a écrit dans le message de groupe de 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
Avatar
Luc Monnet
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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



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

--
Fredo P.
"Luc Monnet" a écrit dans le message de
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




Avatar
Luc Monnet
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." <ponsinet.frederic363(oterça)orange.fr> a écrit dans le message
de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" a écrit dans le message de
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








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

"Fredo P." <ponsinet.frederic363(oterça)orange.fr> a écrit dans le message
de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" a écrit dans le message de
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








Avatar
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" a écrit dans le message de groupe de discussion :
#
Tu touveras ci-joint le fichier sur lequel j'essai de faire des tests:
http://cjoint.com/?cymAw8Kt34
Merci.

"Fredo P." <ponsinet.frederic363(oterça)orange.fr> a écrit dans le message
de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" a écrit dans le message de
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








Avatar
Luc Monnet
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" a écrit dans le message de news:
%
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" a écrit dans le message de groupe de
discussion :
#
Tu touveras ci-joint le fichier sur lequel j'essai de faire des tests:
http://cjoint.com/?cymAw8Kt34
Merci.

"Fredo P." <ponsinet.frederic363(oterça)orange.fr> a écrit dans le message
de news: %
Cela peut t'aider. Une astuce: nommer chaque Shape
http://cjoint.com/?cylBrYrlAw

--
Fredo P.
"Luc Monnet" a écrit dans le message de
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











Avatar
Fredo P.
--
Fredo P.
"Luc Monnet" a écrit dans le message de
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