cellule départ et cellule arivée d'une flèche : projet gare de tri

  • Initiateur de la discussion Initiateur de la discussion Chucky
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chucky

XLDnaute Nouveau
Bonjour,

Comment trouver les coordonnées de départ et d'arrivée d'une flèche ?

Contexte : création d'une appli pour planifier les mouvements de trains dans une gare de tri :
Une feuille excel est utilisée comme plan de gare, les cellules sont des emplacements pour les trains.
- Le train TchouTchou1 doit bouger de C2 à F4
- C2 a pour valeur "TchouTchou1"
- le planificateur trace une fleche de C2 à F4 et clique sur un bouton "enregistrer" (une boite de dialogue quelconque)
- excel demande à quelle heure ? (disons 12h)
- excel enregistre les détails du mouvement dans un autre feuille.
Ca c'est pour le début. Dans la vraie situation, il y a prés de 100 trains, 200 positions possibles, des critères à vérifier (exemple : emplacement de 30m, train de 40m... pb à gérer par excel), possibilité d'imprimer un plan de la situation à une heure donnée (par exemple à 12h10 : plan avec TchouTchou1 en F4, C2 vide), avoir une situation temps réel ... C'est la première discussion, mais je pressent que ce ne sera pas la dernière)

Premier post... , vu mon sujet, probablement pas le dernier. Merci d'avance pour vos contributions !
 

Pièces jointes

Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re

Je peux eventuellement faire l'analyse d'une fleche pour en trouver les coordonnées des extremités, mais je ne vois absolument pas comment determiner a quelle extremité se trouve la pointe de la fleche
Appel est donc fait aux amis qui suivent ce fil . Si une solution est trouvée je repartirai sur cette voie (lol)
En attendant si ce pis aller peut te satisfaire je vais essayer de prendre le depart ailleurs qu'au centre de la cellule et même chose pour l'arrivée
Le bouton ecrire n'est la que par securité (cas d'une selection malheureuse)

Edit: Salut Tototiti (je regarde)
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re,

Au vu des flèches dans tous les sens que tu as dessiné, il est clair que ma solution est insuffisante
Il faudrait pourvoir déterminer pour une flèche donnée où se trouve le "coin" de départ et où se trouve celui d'arrivée
Je cherche et je reviens 🙂
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re,

Peut-être comme ça

Code:
Sub Test()
'Création flèche
Dim Sh As Shape, CelDep As String, CelFin As String, Ligne1 As Long, Ligne2 As Long, Colonne1 As Long, Colonne2 As Long

    CelDep = "f2"
    CelFin = "c4"
    Set Sh = ActiveSheet.Shapes.AddLine(Range(CelDep).Left + Range(CelDep).Width / 2, Range(CelDep).Top + Range(CelDep).Height / 2, Range(CelFin).Left + Range(CelFin).Width / 2, Range(CelFin).Top + Range(CelFin).Height / 2)
    Sh.Line.EndArrowheadStyle = msoArrowheadTriangle
    Sh.Line.EndArrowheadLength = msoArrowheadLengthMedium
    Sh.Line.EndArrowheadWidth = msoArrowheadWidthMedium
'Coordonnées flèche
    Ligne1 = Sh.TopLeftCell.Row
    Colonne1 = Sh.TopLeftCell.Column
    Ligne2 = Sh.BottomRightCell.Row
    Colonne2 = Sh.BottomRightCell.Column
    'MsgBox Sh.Nodes(1).Points(1, 1) & "," & Sh.Nodes(1).Points(1, 2) & " - " & Sh.Nodes(2).Points(1, 1) & "," & Sh.Nodes(2).Points(1, 2)
    CelDep = Cells(IIf(Sh.Nodes(1).Points(1, 2) > Sh.Nodes(2).Points(1, 2), Ligne2, Ligne1), IIf(Sh.Nodes(1).Points(1, 1) > Sh.Nodes(2).Points(1, 1), Colonne2, Colonne1)).Address(False, False)
    CelFin = Cells(IIf(Sh.Nodes(1).Points(1, 2) > Sh.Nodes(2).Points(1, 2), Ligne1, Ligne2), IIf(Sh.Nodes(1).Points(1, 1) > Sh.Nodes(2).Points(1, 1), Colonne1, Colonne2)).Address(False, False)
    MsgBox CelDep & " - " & CelFin
End Sub
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Bonjour pierrejean 🙂 tototiti 🙂

Je peux eventuellement faire l'analyse d'une fleche pour en trouver les coordonnées des extremités, mais je ne vois absolument pas comment determiner a quelle extremité se trouve la pointe de la fleche

C'est ce que j'ai dit aussi au post #5.

A mon avis ce n'est pas possible, pourtant c'est le problème que cherche à résoudre notre ami.

A+
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Bonjour job 🙂,
Re,

Dans la mesure où la pointe de la flèche se trouve sur le point de fin (et qu'on a pas fait une ligne simple pour mettre la flèche sur le point de départ...), je pense que ma proposition doit fonctionner
Sinon, il y a peut-être moyen de voir si ce sont les propriétés EndArrowheadStyle ou BeginArrowheadStyle qui sont renseignées...
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re tototiti,

Si je comprends bien tu crées une flèche par macro, alors les coordonnées de départ et d'arrivée on les connaît forcément...

Mais c'est le problème inverse qui est posé...

A+
 
Dernière édition:
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re,

Je crée un flèche pour en avoir une, après je l'analyse comme si je ne savais pas d'où elle part ni où elle va, mais je dois avouer que c'est trompeur 🙂
Si tu veux, tu peux tester la 2ème partie du code sur une flèche créée manuellement, je crois que ça fonctionne

Edit : si la feuille contient une flèche nommée "Trait 2"

Code:
Sub Test()
Dim Sh As Shape, CelDep As String, CelFin As String, Ligne1 As Long, Ligne2 As Long, Colonne1 As Long, Colonne2 As Long
'Coordonnées flèche
    Set Sh = ActiveSheet.Shapes("Trait 2")
    Ligne1 = Sh.TopLeftCell.Row
    Colonne1 = Sh.TopLeftCell.Column
    Ligne2 = Sh.BottomRightCell.Row
    Colonne2 = Sh.BottomRightCell.Column
    CelDep = Cells(IIf(Sh.Nodes(1).Points(1, 2) > Sh.Nodes(2).Points(1, 2), Ligne2, Ligne1), IIf(Sh.Nodes(1).Points(1, 1) > Sh.Nodes(2).Points(1, 1), Colonne2, Colonne1)).Address(False, False)
    CelFin = Cells(IIf(Sh.Nodes(1).Points(1, 2) > Sh.Nodes(2).Points(1, 2), Ligne1, Ligne2), IIf(Sh.Nodes(1).Points(1, 1) > Sh.Nodes(2).Points(1, 1), Colonne1, Colonne2)).Address(False, False)
    MsgBox CelDep & " - " & CelFin
End Sub
 
Dernière édition:
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re,

Echange des cellules de début et de fin si la flèche se trouve sur le point de début :

Code:
Sub Test()
Dim Sh As Shape, CelDep As String, CelFin As String, Ligne1 As Long, Ligne2 As Long, Colonne1 As Long, Colonne2 As Long, Ech As String
'Coordonnées flèche
    Set Sh = ActiveSheet.Shapes("Trait 1")
    Ligne1 = Sh.TopLeftCell.Row
    Colonne1 = Sh.TopLeftCell.Column
    Ligne2 = Sh.BottomRightCell.Row
    Colonne2 = Sh.BottomRightCell.Column
    CelDep = Cells(IIf(Sh.Nodes(1).Points(1, 2) > Sh.Nodes(2).Points(1, 2), Ligne2, Ligne1), IIf(Sh.Nodes(1).Points(1, 1) > Sh.Nodes(2).Points(1, 1), Colonne2, Colonne1)).Address(False, False)
    CelFin = Cells(IIf(Sh.Nodes(1).Points(1, 2) > Sh.Nodes(2).Points(1, 2), Ligne1, Ligne2), IIf(Sh.Nodes(1).Points(1, 1) > Sh.Nodes(2).Points(1, 1), Colonne1, Colonne2)).Address(False, False)
    If Sh.Line.EndArrowheadStyle = msoArrowheadNone And Sh.Line.BeginArrowheadStyle <> msoArrowheadNone Then
        Ech = CelDep
        CelDep = CelFin
        CelFin = Ech
    End If
    MsgBox CelDep & " - " & CelFin
End Sub
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re

J'ai travaillé un peu ma version
Rappel pour Tototiti (elle créee la fleche partant de la 1ere cellule selectionnée vers la la seconde cellule selectionnée et renseigne la feuille Data )
L'operateur devra "pinailler" en manuel la position de la dite fleche pour garder une bonne visibilité
Pas plus que l'analyse complete d'une fleche (notamment son sens d'ecriture) je pense ceci impossible en automatique
Chucky voudra bien me dire s'il y a lieu de continuer dans ce sens (inscription d'etiquette par exemple)
 

Pièces jointes

Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re,

Hé bien félicitations tototiti, tu as résolu le problème initial de ce fil.

Il fallait penser à utiliser (et connaître) les Nodes et les Points (je découvre).

A+
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re,

Pas plus que l'analyse complete d'une fleche (notamment son sens d'ecriture) je pense ceci impossible en automatique
Elle ne marche pas ma macro qui analyse une flèche ? 😕

Après on pourrait boucler sur toutes les flèches mais comme il faudrait demander une heure à chaque fois, comment faire pour spécifier la flèche concernée ?
La mettre en couleur et en épais ?

Ta version me semble plus appropriée, mais c'est à Chucky de décider s'il repasse par là 🙂

Edit : @job : merci 🙂, et merci aux espions qui permettent de parcourir toutes les propriétés d'un objet en mode débogage 😉
 
Dernière édition:
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re,

@PierreJean : Pas de soucis 😉, on s'amuse bien mais j'aimerais savoir si Chucky préfère aller dans ta direction (clic sur cellules pour créer la flèche) ou le parcours de toutes les flèches créées manuellement pour renseigner la base de données, ou encore si la proposition de job au message #3 de renseigner la feuille Data qui créerais les flèches au fur et à mesure qu'on renseigne les données est la plus appropriée.

Personnellement j'ai un faible pour l'idée de job 🙂, mais je ne suis pas l'utilisateur final
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Re

Salut job (au cas ou j'aurai omis ) 🙂

Attendons donc
J'ai eu des soucis avec les fleches traçées par Chucky (il s'agit de connecteurs) et je n'ai pu apprecier ta macro qu'avec Excel 2000 et non avec 2010
 
Re : cellule départ et cellule arivée d'une flèche : projet gare de tri

Bonjour à tous,

J'ai eu des soucis avec les fleches traçées par Chucky
Damned, à partir d'Excel 2007 il n'existe plus de flèches simples mais que des connecteurs, et pas trouvé les coordonnées des points dans les connecteurs (ou alors c'est bien caché)
En plus, comme 2007 n'enregistre pas de macro lors de la manipulation de shapes, je ne suis pas aidé...
Ma proposition ne fonctionne en effet que sur des flèches simples (pas connecteur) sur Excel 2003 et inférieur

Edit : si, on peut faire des flèches simples en XL2007, mais en utilisant l'outil forme libre (super logique 😉)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour