Excel VBA: Coordenadas de un punto gráfico
Telenar
Mensajes publicados
1
Estado
Miembro
-
Anonyme -
Anonyme -
Hola, buen día.
Antes de hacer mi pregunta, aquí está la base de mi trabajo. Actualmente tengo un gráfico de Excel (gráfico de barras horizontales) que contiene varias series.
Necesito obtener las coordenadas de una serie en particular (para poder dibujar en ese punto preciso una flecha o una barra vertical). He conseguido obtener el número de la serie, he buscado durante bastante tiempo en la ayuda y en varios foros, pero no logro saber si es posible obtener esas coordenadas.
Espero que alguien pueda ayudar, quedo disponible para más precisiones si las necesitan.
Gracias de antemano :)
Antes de hacer mi pregunta, aquí está la base de mi trabajo. Actualmente tengo un gráfico de Excel (gráfico de barras horizontales) que contiene varias series.
Necesito obtener las coordenadas de una serie en particular (para poder dibujar en ese punto preciso una flecha o una barra vertical). He conseguido obtener el número de la serie, he buscado durante bastante tiempo en la ayuda y en varios foros, pero no logro saber si es posible obtener esas coordenadas.
Espero que alguien pueda ayudar, quedo disponible para más precisiones si las necesitan.
Gracias de antemano :)
2 respuestas
Hola
VB/VBA/VBS - Programación - FORUM HardWare.fr :
Acceder a los elementos de dibujo de un gráfico de Excel [VBA EXCEL] :
https://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/excel-acceder-excel-sujet_89822_1.htm
coordenadas X e Y del ratón sobre gráfico de Excel? :
http://www.presence-pc.com/forum/ppc/Programmation/coordonnees-souris-graphique-excel-sujet-4592-1.htm
Gracias
VB/VBA/VBS - Programación - FORUM HardWare.fr :
Acceder a los elementos de dibujo de un gráfico de Excel [VBA EXCEL] :
https://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/excel-acceder-excel-sujet_89822_1.htm
coordenadas X e Y del ratón sobre gráfico de Excel? :
http://www.presence-pc.com/forum/ppc/Programmation/coordonnees-souris-graphique-excel-sujet-4592-1.htm
1. Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long) 2. Dim ElementID As Long 3. Dim Arg1 As Long 4. Dim Arg2 As Long 5. Dim v As Variant 6. GetChartElement x, y, ElementID, Arg1, Arg2 7. MsgBox ("X = " & x & " / Y = " & y) 8. End Sub Esto permite mostrar las coordenadas del puntero del ratón si el gráfico está en una pestaña y no incrustado en una hoja de Excel. ****************** Consigo obtener las coordenadas X y Y del ratón sobre el gráfico incrustado en una hoja de Excel. De hecho, “basta” con crear un módulo de clase llamado “graphique” que ya existe en Excel y reconoce los “mouse down”, los “mouse up” y los “mouse move” Crea un nuevo módulo de clase, se llama clase1 por defecto. Lo dejé así (de hecho no puedo modificarlo) Hay que colocar “Public WithEvents mychartclass As Chart” al principio de la clase. Aquí está el código de la clase: 1. Public WithEvents mychartclass As Chart 2. 3. Private Sub mychartclass_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long) 4. Range("A9" ) = x 5. Range("B9" ) = y 6. End Sub 7. 8. Private Sub mychartclass_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long) 9. Range("A8" ) = x 10. Range("B8" ) = y 11. End Sub ****************** Luego hay que activar esta clase desde el módulo de la hoja de Excel (Sheet1 en mi caso). La sub “initializechart” está vinculada a un botón de comando en la hoja de Excel. Aquí está el código: 1. Dim myClassModule As New Classe1 2. 3. Private Sub initializechart() 4. Set myClassModule.mychartclass = Sheet1.ChartObjects(1).Chart 5. End Sub Con esto verás aparecer las coordenadas del puntero de tu ratón en las celdas A8 y B8. \"Sólo queda\" enlazar estas coordenadas a una línea que se dibujará sobre el gráfico. Gracias
Hola
Info si puede servir:
Extracción de redes de calles a partir de imágenes satelitales de alta resolución espacial:
http://www.google.fr/search?hl=fr&q=cache:U6jAJ4uE4ssJ:documents.irevues.inist.fr/bitstream/2042/13796/1/A79.pdf+extraire+coordonnee+point+sur+un+graphique
XL: Etiquetas en cada punto de un gráfico:
https://support.microsoft.com/fr-fr/help/466512
Localizar las coordenadas de un punto en un gráfico - Forum de desarrolladores:
https://www.developpez.net/forums/d330098/environnements-developpement/matlab/interfaces-graphiques/retrouver-coordonn-es-d-point-graphique/
[Excel] Recuperar las coordenadas de un punto:
https://forums.commentcamarche.net/forum/affich-1461012-excel-recuperer-les-coordonnees-d-un-point#0
******
Búsqueda de 'coordonnee point sur un graphique' con Google :
https://www.google.fr/search?hl=fr&q=coordonnee+point+sur+un+graphique&gws_rd=ssl
******
récup. donnée de graph - Excel Downloads Forums :
https://www.excel-downloads.com/threads/recup-donnee-de-graph.30592/
Recuperación de puntos sobre un gráfico Exce :
https://forums.commentcamarche.net/forum/affich-7815283-recuperation-de-points-sur-un-graphiques-exce#0
Gracias
******************
******************
Síntomas
He realizado un gráfico en el que deseo mostrarEtiquetas personalizadas en cada punto de una serie, cuyo contenido de estas etiquetas se encuentra en un rango diferente al utilizado para la creación del gráfico.
Además, deseo que las modificaciones de estos valores en la hoja de cálculo actualicen estas etiquetas.
¿Cómo debo proceder?
Resolución
Esta funcionalidad no está disponible directamente en Microsoft Excel.
Sin embargo, puedes realizar esta operación añadiendo manualmente la referencia de las celdas a cada punto de la serie siguiendo el procedimiento siguiente:
Si el gráfico está incrustado en la hoja de cálculo:
1. Activa el gráfico haciendo doble clic sobre el objeto gráfico
En todos los casos (aparte de Surface):
1. Selecciona la serie.
2. En el menú Insertar, activa el comando Etiqueta de datos...
3. Elige Mostrar etiqueta.
4. Haz clic en Aceptar.
5. Selecciona la etiqueta de alguno de los puntos.
6. Escribe el signo igual ""="".
7. Luego haz clic en la celda de la hoja de cálculo que contiene
la etiqueta.
8. Valida.
9. Repite los pasos 5 a 9 para cada punto de la serie.
Esta serie de manipulaciones puede automatizarse con una macro de Excel 4.0 (para todas las versiones de Excel) o Visual Basic para Aplicaciones (para las versiones 5.0 en adelante).
******************
******************
Info si puede servir:
Extracción de redes de calles a partir de imágenes satelitales de alta resolución espacial:
http://www.google.fr/search?hl=fr&q=cache:U6jAJ4uE4ssJ:documents.irevues.inist.fr/bitstream/2042/13796/1/A79.pdf+extraire+coordonnee+point+sur+un+graphique
XL: Etiquetas en cada punto de un gráfico:
https://support.microsoft.com/fr-fr/help/466512
Localizar las coordenadas de un punto en un gráfico - Forum de desarrolladores:
https://www.developpez.net/forums/d330098/environnements-developpement/matlab/interfaces-graphiques/retrouver-coordonn-es-d-point-graphique/
[Excel] Recuperar las coordenadas de un punto:
https://forums.commentcamarche.net/forum/affich-1461012-excel-recuperer-les-coordonnees-d-un-point#0
******
Búsqueda de 'coordonnee point sur un graphique' con Google :
https://www.google.fr/search?hl=fr&q=coordonnee+point+sur+un+graphique&gws_rd=ssl
******
récup. donnée de graph - Excel Downloads Forums :
https://www.excel-downloads.com/threads/recup-donnee-de-graph.30592/
Recuperación de puntos sobre un gráfico Exce :
https://forums.commentcamarche.net/forum/affich-7815283-recuperation-de-points-sur-un-graphiques-exce#0
Gracias
******************
******************
Síntomas
He realizado un gráfico en el que deseo mostrarEtiquetas personalizadas en cada punto de una serie, cuyo contenido de estas etiquetas se encuentra en un rango diferente al utilizado para la creación del gráfico.
Además, deseo que las modificaciones de estos valores en la hoja de cálculo actualicen estas etiquetas.
¿Cómo debo proceder?
Resolución
Esta funcionalidad no está disponible directamente en Microsoft Excel.
Sin embargo, puedes realizar esta operación añadiendo manualmente la referencia de las celdas a cada punto de la serie siguiendo el procedimiento siguiente:
Si el gráfico está incrustado en la hoja de cálculo:
1. Activa el gráfico haciendo doble clic sobre el objeto gráfico
En todos los casos (aparte de Surface):
1. Selecciona la serie.
2. En el menú Insertar, activa el comando Etiqueta de datos...
3. Elige Mostrar etiqueta.
4. Haz clic en Aceptar.
5. Selecciona la etiqueta de alguno de los puntos.
6. Escribe el signo igual ""="".
7. Luego haz clic en la celda de la hoja de cálculo que contiene
la etiqueta.
8. Valida.
9. Repite los pasos 5 a 9 para cada punto de la serie.
Esta serie de manipulaciones puede automatizarse con una macro de Excel 4.0 (para todas las versiones de Excel) o Visual Basic para Aplicaciones (para las versiones 5.0 en adelante).
******************
******************
EJEMPLO: Aquí hay un ejemplo de código que permite automatizar este procesamiento. Para implementar este programa, puedes seguir el siguiente proceso: 1. A partir de los datos contenidos en una hoja de cálculo, crea un gráfico 2. Si el gráfico está incrustado, actívalo. 3. Selecciona una serie. 4. Ejecuta la macro descrita a continuación. ######################################################################### ' Código Visual Basic en inglés Sub AttribuerEtiquettes() Dim maPlage As Variant, maCellule As Object, monPoint As Object Dim nmGraphique$, nmSérie$, i% ' Detección del tipo de ventana (xlGraphiqueDansEmplacement o ' xlGraphiqueEnFenetre). tpGraphique = ActiveWindow.Type ' Obtención del nombre del gráfico incrustado y de la serie seleccionada. nmGraphique = ActiveChart.Parent.Name nmSérie = Selection.Name ' Desincrusta el gráfico para poder seleccionar un rango de celdas If tpGraphique <> 1 Then ActiveWindow.Visible = False ' Selección del rango que contiene las etiquetas Set maPlage = Application.InputBox( _ Prompt:="Selectionnez la plage contenant les étiquettes :", _ Title:="Etiquettes", Type:=8) ' Reactivar el gráfico incrustado If tpGraphique <> 3 Then ActiveSheet.ChartObjects(nmGraphique).Activate ' Selección de la serie ActiveChart.SeriesCollection(nmSérie).Select ' Sale si se ha cancelado el cuadro If VarType(maPlage) = vbBoolean Then Exit Sub ' Inicialización de un contador i = 1 ' Sale si hay más celdas que puntos If maPlage.Count > Selection.Points.Count Then MsgBox Prompt:="Sélection non valide. Plage trop grande !", _ Buttons:=vbCritical Exit Sub End If Application.ScreenUpdating = False With Selection For Each maCellule In maPlage Set monPoint = .Points(i) ' Se inicializa la etiqueta con una referencia de celda ' esto permitirá una vinculación With monPoint .ApplyDataLabels Type:=xlShowValue .DataLabel.Text = "=" & maCellule.Address _ (ReferenceStyle:=xlR1C1, External:=True) End With i = i + 1 Next End With End Sub ' Código Visual Basic francés Proc AttribuerEtiquettes() Dcl maPlage En Variant; maCellule En Objet; monPoint En Objet Dcl nmGraphique$; nmSérie$; i% ' Detección del tipo de ventana (xlGraphiqueDansEmplacement o ' xlGraphiqueEnFenetre). tpGraphique = FenêtreActive.Type ' Obtención del nombre del gráfico incrustado y de la serie ' seleccionada. nmGraphique = GraphiqueActif.Parent.Nom nmSérie = Sélection.Nom ' Desincrusta el gráfico incrustado para poder seleccionar ' un rango de celdas Si tpGraphique <> 1 Alors FenêtreActive.Affiché = Faux ' Selección de la plage que contiene las etiquetas AffecteRéf maPlage = Application.BoîteSaisie( _ Invite:="Selectionnez la plage contenant les étiquettes :"; _ Titre:="Etiquettes"; Type:=8) ' Reactivar el gráfico incrustado Si tpGraphique <> 3 Alors FeuilleActive.ObjetsGraphique(nmGraphique) _ .Activer ' Selección de la serie GraphiqueActif.Séries(nmSérie).Sélectionner ' Sale si se ha cancelado la caja Si TypeVariant(maPlage) = vbBooléen Alors Sortir Proc ' Inicialización de un contador i = 1 ' Sale si hay más celdas que puntos If maPlage.NombreDe > Sélection.Points.NombreDe Alors Message Invite:="Sélection non valide. Plage trop grande !"; _ Boutons:=vbCritique Sortir Proc Fin Si Application.MiseAJourEcran = Faux Avec Sélection Pour Chaque maCellule Dans maPlage AffecteRéf monPoint = .Points(i) ' Se inicializa la etiqueta con una referencia de celda ' lo que permitirá una vinculación Avec monPoint .AttribuerEtiquettesDonnées Type:=xlAffichageValeur .EtiquetteDonnée.Texte = "=" & maCellule.Adresse _ (StyleRéférence:=xlL1C1; Externe:=Vrai) Fin Avec i = i + 1 Suivant Fin Avec Fin Proc ######################################################################### ######################################################################### Lenguaje Macro Excel 4.0 nmSérie=SELECTION() nmGraphique=LIRE.DOCUMENT(1) =ACTIVER() maZone=ENTRER("Selectionnez la plage contenant les étiquettes :"; 8;"Etiquettes") =ACTIVER(nmGraphique) =SELECTIONNER(nmSérie) =SI(ESTLOGIQUE(maZone);RETOUR()) noSérie=CNUM(SUBSTITUE(nmSérie;"S";"\")) idPoint=1 =ETIQUETTES.DONNEES(4) =ECRAN(FAUX) =POUR.CELLULE("maCellule";maZone) = AJOUTER.TEXTE(4;noSérie;idPoint) = FORMULE("="&TEXTEREF(maCellule)) idPoint= idPoint+1 =SUIVANT() =RETOUR() ######################################################################### REMARQUES : 1. Dans la macro en langage Excel 4.0, la fonction ETIQUETTES.DONNEES(4) debe eliminarse para funcionar en la versión 4.0 de Microsoft Excel. 2. Las macros en Visual Basic para Aplicaciones y lenguaje Macro Excel 4.0 siguen el mismo razonamiento.Gracias