Tracer une ligne entre 2 cellules (Excel) [Résolu]

babu26 44 Messages postés samedi 8 juin 2013Date d'inscription 21 janvier 2015 Dernière intervention - 28 nov. 2014 à 19:36 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 3 déc. 2014 à 10:17
Bonjour,
Afin de tracer un circuit lors de son évolution, peut-on afficher une ligne entre deux points (centres des 2 cellules) par une macro VBA ?
Les 2 cellules sont définies par une zone (ex: D5:H4) dont les positions (Top, Left, Height et Width) sont à relever, avec connaissance des demi-largeurs et demi-hauteurs des cellules. Toutes les cellules ont le même format.
Merci. Bab
Afficher la suite 

Votre réponse

9 réponses

jordane45 22711 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 octobre 2018 Dernière intervention - 28 nov. 2014 à 19:50
0
Merci
Bonjour.
Cela ressemble à l'énoncé d'un exercice. ..

sur quoi bloques tu ?
Qu'as tu commence à coder ?


Nous pouvons essayer de t'aider. .mais pas le faire à ta place. ..

Commenter la réponse de jordane45
babu26 44 Messages postés samedi 8 juin 2013Date d'inscription 21 janvier 2015 Dernière intervention - 2 déc. 2014 à 15:57
0
Merci
bonjour
En fait je voudrais tracer un trait dont les points extrêmes seraient les centres (ou les points supérieur gauche) de 2 cellules distinctes, puis un autre partant de l'une pour la relier une troisième, etc.
Le but est d'imager un parcours ...

En Basic (d'antan), une instruction [Line (x1,y1)-(x2,y2),n] permettait ces tracés.
Existe-t-il de telles instruction en VbA ?
Existe-il un logiciel (gratuit de préférence) pour constituer une telle image à partir de points identifiés ?

Merci, Bab
Commenter la réponse de babu26
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 2/12/2014 à 16:41
0
Merci
Bonjour,
Ce que tu appelles "Basic d'antan" n'est pas du VBA, mais du VB5 ou VB6.
Line ne peut s'appliquer qu'à un contrôle doté d'un hdc, ce dont ne dispose pas ni Exel, ni son VBA.
Tu ne peux donc qu'insérer une forme (ligne).
Et donc écrire en VBA ce que tu ferais en choisissant dans la barre d'outils de Excel : Insertion ==>> Formes === Lignes (et choix du style de ligne).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
babu26 44 Messages postés samedi 8 juin 2013Date d'inscription 21 janvier 2015 Dernière intervention - 3 déc. 2014 à 01:11
0
Merci
bonjour et merci
Si j'ai bien compris, il me faut autant de forme.lignes (une collection) que j'aurais de traits à tracer ?
Peut-on modifier les points extrêmes de chacune de ces lignes ?
Les propriétés hide / show : comment les appliquer ?

J'avoue que je me ballade beaucoup dans l'aide d'Excel, sans trouver de modèles, ni d'explications très claires. En plus, si je cherche un mot-clé, c'est généralement sans résultat.

Je vais tenter de continuer, mais je commence à trouver cela fastidieux.
Commenter la réponse de babu26
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 3/12/2014 à 07:46
0
Merci
Insère donc manuellement (comme dit plus haut) une forme de ligne.
Ouvre sa fenêtre (en cliquant droit dessus) et clique sur affecter une macro.
Tu découvriras ainsi son nom (de la forme "Connecteur droit 1")
Cette forme appartient à la collection Shapes de Excel.
Tu t'y réfères donc (comme nous l'avons déjà vu à plusieurs reprises sur ce forum) par :
Me.Shapes("Connecteur droit 1")
Cet objet a plusieurs propriétés, dont Left, Top, Width et Height.
Amuse-toi donc à voir ce qu'elles sont, par un tout petit code du genre :
msgbox Me.Shapes("Connecteur droit 2").nom_de_la_propriété (il y a même une propriété visible ...)
Tu en apprendras ainsi déjà beaucoup
Certaines de ses propriétés ont elles-mêmes des sous-propriétés (c'est par exemple le cas de la propriété Line). Il te suffira d'ajouter un "." derrière le nom de la propriété pour obtenir de l'intellisense les noms des sous-propriétés possibles. Pour chacune d'entre elles, procède comme nous l'avons dit en ce qui concerne la propriété principale.
C'est ainsi que l'on apprend et ainsi que j'ai moi-même appris.
Une fois passée cette étape :
Ta "ligne brisée" devra en effet être nécessairement constituée d'une succession de Shapes. Pour les créer en mode exécution (par VBA), il te faudra utiliser la méthode Add (comme pour toute collection), à bûcher dans ton aide VBA; le moteur de recherche de ce forum te conduira par ailleurs facilement à de nombreuses discussions relatives à la création et l'ajout d'objets (shapes ou autres) de manière dynamique.
Tout cela sera à "acquérir". Et ce d'autant que, dans ce domaine, chaque cas est un cas particulier. Une préhension préalable très claire de ces méthodes te sera donc absolument nécessaire.

Par ailleurs : un objet range (une cellule en est un) possède également les propriétés Top, Left, Width et Height. Un tout petit calcul arithmétique (très simple) te permettra donc de déterminer les coordonnées du centre d'une cellule.
Un segment (tes shapes) est toujours (même si horizontal ou vertical) compris dans un rectangle. Son point de départ est défini par les coordonnées du coin supérieur gauche de ce rectangle et son point d'arrivée par celles du coin inférieur droit de ce rectangle. A partir de la, tout n'est qu'arithmétique.
En te rappelant que toutes ces propriétés sont en échelle de points et non d'autres unités (pixels, cms, etc ...)

Venons-en maintenant à ta remarque :
Je vais tenter de continuer, mais je commence à trouver cela fastidieux

Il est tout-à-fait vrai que Excel est un tableur. Sa vocation n'est pas réellement celle que tu cherches à lui attribuer. La "chose" reste toutefois parfaitement réalisable (mais à quel prix/poids !).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
babu26 44 Messages postés samedi 8 juin 2013Date d'inscription 21 janvier 2015 Dernière intervention - 3 déc. 2014 à 08:05
0
Merci
Bonjour matinal et grand merci.

Je Pense avoir tout compris et je vais m'atteler à résoudre ce problème.

Dans un modèle (BigBen pour le citer), j'avais bien vu des shapes (pour les aiguilles) mais je n'avais pas su comment ils avaient été générés. Maintenant, c'est plus clair.

Je considère le Pb. résolu et te dis encore Merci. Bab
Commenter la réponse de babu26
babu26 44 Messages postés samedi 8 juin 2013Date d'inscription 21 janvier 2015 Dernière intervention - 3 déc. 2014 à 10:00
0
Merci
Me re-voila ! Salut.
Je dois être complètement idiot...
Je n'arrive pas à affecter une macro après avoir insérer une forme "Connecteur droit 1".
je vois les formes de la feuille dans la section Sélection et visibilité et suis bloqué.
Via "Enregistrer une macro", mes clics et mes déplacements de la forme ne sont pas enregistrer. Pourquoi ?
A +, Bab
Commenter la réponse de babu26
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 3 déc. 2014 à 10:05
0
Merci
Les doigts sont toujours moins agiles le matin ?
Non, je plaisante.
Ce n'est pas toujours évident.
Sur la forme que tu as insérée manuellement : clic droit. Recommence plusieurs fois ainsi jusqu'à obtenir une boîte de dialogue dont l'une des "rubriques" dit "Affecter une macro".
Tu y arriveras après plusieurs essais.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 3/12/2014 à 10:23
0
Merci
regarde :


Ne cherche pas à enregistrer une macro. L'enregistreur de macros ne sait pas le faire en ce qui concerne l'ajout de formes.
En disant que tu veux "affecter une macro", tu apprends simplement le nom de ta Shape (juste pour t'entraîner à la manipuler ensuite à partir de son nom).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.