Excel VBA : Coordonnées d'un point graphique
Fermé
Telenar
Messages postés
1
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
22 avril 2008
-
22 avril 2008 à 15:56
Anonyme - 10 août 2008 à 06:08
Anonyme - 10 août 2008 à 06:08
A voir également:
- Excel VBA : Coordonnées d'un point graphique
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
Bonjour
VB/VBA/VBS - Programmation - FORUM HardWare.fr :
Accéder aux éléments de dessin d'un graphique Excel [VBA EXCEL] :
https://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/excel-acceder-excel-sujet_89822_1.htm
coordonnées X et Y de la souris sur graphique excel ? :
http://www.presence-pc.com/forum/ppc/Programmation/coordonnees-souris-graphique-excel-sujet-4592-1.htm
Merci
VB/VBA/VBS - Programmation - FORUM HardWare.fr :
Accéder aux éléments de dessin d'un graphique Excel [VBA EXCEL] :
https://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/excel-acceder-excel-sujet_89822_1.htm
coordonnées X et Y de la souris sur graphique 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 Cela permet d'afficher les coordonnées du pointeur de la souris si le graphique est dans un onglet et non intégré à une feuille Excel. ****************** J'arrive à récupérer les coordonnées X et Y de la souris sur le graphique incorporé dans une feuille Excel. En fait il "suffit" de créer un module de classe "graphique" lequel existe déjà dans excel et reconnait les "mouse down", les "mouse up" et les "mouse move" Créez un nouveau module de classe, il s'appelle classe1 par défaut. Je l'ai laissé comme ça(en fait je n'arrive pas à le modifier) Il faut placer "Public WithEvents mychartclass As Chart" en tête de classe. Voici le code de la classe : 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 ****************** Ensuite il faut activer cette classe à partir du module de la feuille excel (sheet1 chez moi). La sub "initializechart" est reliée à un bouton de commande sur la feuille Excel. Voici le code : 1. Dim myClassModule As New Classe1 2. 3. Private Sub initializechart() 4. Set myClassModule.mychartclass = Sheet1.ChartObjects(1).Chart 5. End Sub Avec ça vous verrez apparaitre les coordonnées du pointeur de votre souris dans les cases A8 et B8. "Il ne reste plus qu'à" lier ces coordonnées à une ligne qui sera tracée sur le graphique.
Merci
Bonjour
Infos si ça peut servir :
Extraction de réseaux de rues à partir d’images satellites à haute résolution spatiale :
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: Etiquettes sur chaque point d'un graphique :
https://support.microsoft.com/fr-fr/help/466512
Retrouver les coordonnées d'un point sur un graphique - Forum des développeurs :
https://www.developpez.net/forums/d330098/environnements-developpement/matlab/interfaces-graphiques/retrouver-coordonn-es-d-point-graphique/
[Excel] Récupérer les coordonnées d'un point :
https://forums.commentcamarche.net/forum/affich-1461012-excel-recuperer-les-coordonnees-d-un-point#0
******
Recherche de 'coordonnee point sur un graphique' avec 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/
Récupération de points sur un graphiques Exce :
https://forums.commentcamarche.net/forum/affich-7815283-recuperation-de-points-sur-un-graphiques-exce#0
Merci
******************
******************
Symptômes
J'ai réalisé un graphique sur lequel je souhaite afficher des étiquettes personnalisées sur chaque point d'une série, le contenu de ces étiquettes se trouvant sur plage différente de celle utilisée pour la création du graphique.
De plus, je souhaite que les modifications de ces valeurs dans la feuille de calcul mettent à jour ces étiquettes.
Comment dois-je procéder ?
Résolution
Cette fonctionnalité n'est pas disponible directement dans Microsoft Excel.
Cependant, vous pouvez réaliser cette opération en ajoutant manuellement la référence des cellules à chaque point de la série en suivant la procédure suivante :
Si le graphique est incorporé à la feuille de calcul :
1. Activez le graphique en double-cliquant sur l'objet graphique
Dans tous les cas (autres que Surface):
1. Sélectionner la série.
2. Dans le menu Insertion, activer la commande Etiquette de données...
3. Choisissez Afficher étiquette.
4. Cliquez sur OK.
5. Sélectionnez l'étiquette d'un des points.
6. Tapez le signe égal "=".
7. Puis cliquez sur la cellule de la feuille de calcul contenant
l'étiquette.
8. Validez.
9. Répétez les étapes 5 à 9 pour chaque point de la série.
Cette série de manipulations peut être automatisée par une macro-commande écrite en langage macro Excel 4.0 (pour toutes versions d'Excel) ou Visual Basic Edition Applications (pour les versions 5.0 et supérieures).
******************
******************
Infos si ça peut servir :
Extraction de réseaux de rues à partir d’images satellites à haute résolution spatiale :
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: Etiquettes sur chaque point d'un graphique :
https://support.microsoft.com/fr-fr/help/466512
Retrouver les coordonnées d'un point sur un graphique - Forum des développeurs :
https://www.developpez.net/forums/d330098/environnements-developpement/matlab/interfaces-graphiques/retrouver-coordonn-es-d-point-graphique/
[Excel] Récupérer les coordonnées d'un point :
https://forums.commentcamarche.net/forum/affich-1461012-excel-recuperer-les-coordonnees-d-un-point#0
******
Recherche de 'coordonnee point sur un graphique' avec 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/
Récupération de points sur un graphiques Exce :
https://forums.commentcamarche.net/forum/affich-7815283-recuperation-de-points-sur-un-graphiques-exce#0
Merci
******************
******************
Symptômes
J'ai réalisé un graphique sur lequel je souhaite afficher des étiquettes personnalisées sur chaque point d'une série, le contenu de ces étiquettes se trouvant sur plage différente de celle utilisée pour la création du graphique.
De plus, je souhaite que les modifications de ces valeurs dans la feuille de calcul mettent à jour ces étiquettes.
Comment dois-je procéder ?
Résolution
Cette fonctionnalité n'est pas disponible directement dans Microsoft Excel.
Cependant, vous pouvez réaliser cette opération en ajoutant manuellement la référence des cellules à chaque point de la série en suivant la procédure suivante :
Si le graphique est incorporé à la feuille de calcul :
1. Activez le graphique en double-cliquant sur l'objet graphique
Dans tous les cas (autres que Surface):
1. Sélectionner la série.
2. Dans le menu Insertion, activer la commande Etiquette de données...
3. Choisissez Afficher étiquette.
4. Cliquez sur OK.
5. Sélectionnez l'étiquette d'un des points.
6. Tapez le signe égal "=".
7. Puis cliquez sur la cellule de la feuille de calcul contenant
l'étiquette.
8. Validez.
9. Répétez les étapes 5 à 9 pour chaque point de la série.
Cette série de manipulations peut être automatisée par une macro-commande écrite en langage macro Excel 4.0 (pour toutes versions d'Excel) ou Visual Basic Edition Applications (pour les versions 5.0 et supérieures).
******************
******************
EXEMPLE : Voici un exemple de code permettant d'automatiser ce traitement. Pour mettre en oeuvre ce programme, vous pouvez suivre le processus suivant : 1. A partir des données contenues dans une feuille de calcul, créez un graphique 2. Si le graphique est incorporé, activez le graphique. 3. Sélectionnez une série. 4. Exécutez la macro décrite ci-dessous. ######################################################################### ' Code Visual Basic anglais Sub AttribuerEtiquettes() Dim maPlage As Variant, maCellule As Object, monPoint As Object Dim nmGraphique$, nmSérie$, i% ' Détection du type de la fenêtre (xlGraphiqueDansEmplacement ou ' xlGraphiqueEnFenetre). tpGraphique = ActiveWindow.Type ' Récupération du nom du graphique et de la série sélectionnée. nmGraphique = ActiveChart.Parent.Name nmSérie = Selection.Name ' Déselection du graphique incorporé pour pouvoir sélectionner ' une plage de cellules If tpGraphique <> 1 Then ActiveWindow.Visible = False ' Sélection de la plage contenant les étiquettes Set maPlage = Application.InputBox( _ Prompt:="Selectionnez la plage contenant les étiquettes :", _ Title:="Etiquettes", Type:=8) ' Réactivation du graphique incorporé If tpGraphique <> 3 Then ActiveSheet.ChartObjects(nmGraphique).Activate ' Sélection de la série ActiveChart.SeriesCollection(nmSérie).Select ' Quitte si on a annulé la boîte If VarType(maPlage) = vbBoolean Then Exit Sub ' Initialisation d'un compteur i = 1 ' Quitte si on a plus de cellules que de points 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) ' On initialise l'étiquette avec une référence de cellule ' ceci permettra d'avoir une liaison With monPoint .ApplyDataLabels Type:=xlShowValue .DataLabel.Text = "=" & maCellule.Address _ (ReferenceStyle:=xlR1C1, External:=True) End With i = i + 1 Next End With End Sub ' Code Visual Basic français Proc AttribuerEtiquettes() Dcl maPlage En Variant; maCellule En Objet; monPoint En Objet Dcl nmGraphique$; nmSérie$; i% ' Détection du type de la fenêtre (xlGraphiqueDansEmplacement ou ' xlGraphiqueEnFenetre). tpGraphique = FenêtreActive.Type ' Récupération du nom du graphique incorporé et depuis la série ' sélectionnée. nmGraphique = GraphiqueActif.Parent.Nom nmSérie = Sélection.Nom ' Déselection du graphique incorporé pour pouvoir sélectionner ' une plage de cellules Si tpGraphique <> 1 Alors FenêtreActive.Affiché = Faux ' Sélection de la plage contenant les étiquettes AffecteRéf maPlage = Application.BoîteSaisie( _ Invite:="Selectionnez la plage contenant les étiquettes :"; _ Titre:="Etiquettes"; Type:=8) ' Réactivation du graphique incorporé Si tpGraphique <> 3 Alors FeuilleActive.ObjetsGraphique(nmGraphique) _ .Activer ' Sélection de la série GraphiqueActif.Séries(nmSérie).Sélectionner ' Quitte si on an annulé la boîte Si TypeVariant(maPlage) = vbBooléen Alors Sortir Proc ' Initialisation d'un compteur i = 1 ' Quitte si on a plus de cellules que de points Si 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) ' On initialise l'étiquette avec une référence de cellule ' ce qui permettra d'avoir une liaison 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 ######################################################################### ######################################################################### Langage 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) doit être supprimée pour fonctionner dans la version 4.0 de Microsoft Excel. 2. Les macros en Visual Basic Edition Applications et langage Macro Excel 4.0 suivent le même raisonnement.Merci