Tracer une ligne entre 2 cellules (Excel)

Résolu
babu26 Messages postés 44 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 21 janvier 2015 - 28 nov. 2014 à 19:36
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 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

9 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
28 nov. 2014 à 19:50
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. ..

0
babu26 Messages postés 44 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 21 janvier 2015
2 déc. 2014 à 15:57
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 2/12/2014 à 16:41
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
0
babu26 Messages postés 44 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 21 janvier 2015
3 déc. 2014 à 01:11
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 3/12/2014 à 07:46
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
0
babu26 Messages postés 44 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 21 janvier 2015
3 déc. 2014 à 08:05
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
0
babu26 Messages postés 44 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 21 janvier 2015
3 déc. 2014 à 10:00
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 déc. 2014 à 10:05
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 3/12/2014 à 10:23
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
0
Rejoignez-nous