Odesta
XLDnaute Impliqué
Bonjour
Un post pour recueillir non pas des nouvelles fonctions, mais vos diverses déconvenues (qui font rire jaune)
Après une bonne heure de code pour faire un algo me premettant de déterminer quels connecteurs j'allais utiliser pour relirer deux boites :
Mon oeil a tilté sur une petite phrase dans l'aide attribué aux connecteurs :
Bon, je suis content, mon algo ne marchait pas, et je ne veux pas perdre encore 30 minutes à le décoder. donc "Suppr"...mais quand même : ZUT !
Bon App' !
Olivier
Un post pour recueillir non pas des nouvelles fonctions, mais vos diverses déconvenues (qui font rire jaune)
Après une bonne heure de code pour faire un algo me premettant de déterminer quels connecteurs j'allais utiliser pour relirer deux boites :
Code:
If trouve = True Then 'vérification OK
'trouver les coordonnées des deux cadres
'dégrouper les formes
feuille_simu.Shapes("Groupe_" & tableau_UP(ligne, 2)).Ungroup
feuille_simu.Shapes("Groupe_" & tableau_UP(indice_up_deb, 2)).Ungroup
b = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Top
a = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Left
e = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Height
f = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Width
d = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Top
c = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Left
g = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Height
h = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Width
'algorythme des flèches : basée sur la distance la plus courte
'if hauteur_begin >
' 1- rouge fin : (c – (a + f/2))² + (b-(d+g/2))²
' 2- rouge épais : (c+h/2 – (a + f/2))² + (b-(d+g))²
' 3- noir point : (c – (a + f))² + (b+e/2-(d+g/2))²
' 4- noir fin : (c+h/2 – (a + f))² + (b+e/2-d)²
' 5- noir épais : (c+h/2 – (a + f))² + (b+e/2-(d+g))²
' 6- bleu fin : (c – (a + f/2))² + (b+e-(d+g/2))²
' 7- bleu épais : (c+h/2 – (a + f/2))² + (b+e-d)²
tableau_longueur_fleche(1) = (c - (a + f / 2)) ^ 2 + (b - (d + g / 2)) ^ 2
tableau_longueur_fleche(2) = (c + h / 2 - (a + f / 2)) ^ 2 + (b - (d + g)) ^ 2
tableau_longueur_fleche(3) = (c - (a + f)) ^ 2 + (b + e / 2 - (d + g / 2)) ^ 2
tableau_longueur_fleche(4) = (c + h / 2 - (a + f)) ^ 2 + (b + e / 2 - d) ^ 2
tableau_longueur_fleche(5) = (c + h / 2 - (a + f)) ^ 2 + (b + e / 2 - (d + g)) ^ 2
tableau_longueur_fleche(6) = (c - (a + f / 2)) ^ 2 + (b + e - (d + g / 2)) ^ 2
tableau_longueur_fleche(7) = (c + h / 2 - (a + f / 2)) ^ 2 + (b + e - d) ^ 2
taille = tableau_longueur_fleche(1) 'initialisation : on cherche la plus courte
For i = 1 To 7
If taille > tableau_longueur_fleche(i) Then
taille = tableau_longueur_fleche(i)
choix_fleche = i
End If
Next
'écriture des point d'encrage en fonction des cas
'les points d'encrage sont 1 haut, 2 gauche, 3 bas, 4 droite.
Select Case choix_fleche
Case 1
encrage_deb = 1
encrage_fin = 4
Case 2
encrage_deb = 1
encrage_fin = 3
Case 3
encrage_deb = 2
encrage_fin = 4
Case 4
encrage_deb = 2
encrage_fin = 1
Case 5
encrage_deb = 2
encrage_fin = 3
Case 6
encrage_deb = 3
encrage_fin = 4
Case 7
encrage_deb = 3
encrage_fin = 1
End Select
'inverser si la cible est à gauche de la source :
If (a + f / 2) > (c + h / 2) Then
temp = encrage_deb
encrage_deb = encrage_fin
encrage_fin = temp
End If
Mon oeil a tilté sur une petite phrase dans l'aide attribué aux connecteurs :
Utilisez la méthode RerouteConnections pour rechercher automatiquement le chemin le plus court entre deux formes reliées par le connecteur
Bon, je suis content, mon algo ne marchait pas, et je ne veux pas perdre encore 30 minutes à le décoder. donc "Suppr"...mais quand même : ZUT !
Bon App' !
Olivier