Afficher un graphique feuille x sur une feuille y au clic

Mowey Messages postés 8 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour à tous.

Je travaille sur un fichier excel qui comporte plusieurs feuilles dont une feuille "Graph" qui contient plusieurs graphiques, qui prennent leur valeurs sur les lignes d'une feuille "Générale".
Je voudrais, si possible, que lorsque j'écris dans la ligne 3 de ma feuille "Générale" le graphique qui correspond s'affiche dans cette feuille "Générale". Si j'écris, ou je clique dans la ligne 4, c'est un autre graphique qui s'affiche, etc...

J'ai d'abords cherché à faire cela sans macro, mais je n'ai pas réussi. Je pense donc qu'une macro pourrait faire l'affaire, mais je ne sais pas comment procéder.

Auriez-vous une idée de comment faire ?

En espérant avoir été claire. Merci d'avance !!

6 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Peux tu envoyer la partie concernée de ton fichier, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu

    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
    3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
    en bleu souligné ; tu le sélectionnes et tu fais "Copier"
    5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
    tu fais "Coller".

    Cdlmnt
    0
  2. Mowey Messages postés 8 Statut Membre
     
    Bonjour et merci de votre réponse.

    Voici le fichier : https://www.cjoint.com/c/FGnnARWg3HZ

    Je souhaite donc que lorsque je sélectionne, par exemple, la ligne 6/7 de ma feuille "fiche_releve" ou que j'écris dans une de ses cases, le graphique "repère 1" de la feuille "Graph" s'affiche sur la feuille "fiche_releve". Si je clique sur une autre ligne, 8/9 par exemple, c'est le graphique "repère 2" qui s'affiche, et ainsi de suite.

    On peut définir un emplacement ou vont se succéder les graphiques sur la feuille "fiche_releve" si nécessaire.

    Merci de votre aide !!
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Je ne sais pas si j'ai bien compris, donc, un début de réponse http://www.cjoint.com/c/FGnoGpT0SSd
    Clic-clic en colonne A pour afficher le graphique depuis la feuille Graph
    RQ. Dans la feuille Graph tu n'as pas tous les graphiques, donc il y a (actuellement) un problème, un clic-clic sur le repère 3 te donnera le graphique repère 4
    Pour aller plus loin il faut
    - soit mettre les 13 graphiques dans le feuille Graph dans l'ordre des repères
    - soit on complique un peu le code pour déterminer le bon graphique (faisable en travaillant sur le titre)

    Cdlmnt
    0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    J'ai finalement travaillé sur le titre
    http://www.cjoint.com/c/FGno5vu01qd

    Le code est dans le module de la feuille 1

    RQ. Mon vieil excel 2003 a peut être perturbé le fichier

    Cdlmnt
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mowey
     
    Bonjour,

    Un grand merci pour votre aide, je n'aurai jamais été capable d'écrire ce code moi même...!

    Est-il possible de faire en sorte que les graphiques s'affichent lorsqu'on clique sur n'importe quelle case de la ligne et non pas que sur la case de la première colonne ? J'ai cherché à modifier le code mais ça ne se passe pas comme attendu...

    Merci !!!
    0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    A tester (les lignes à modifier sont soulignées)

    Const plageclic = "A6:AG31"

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim nomgr As String, gr As Object, nbgr As Long, nugr As Long, li As Long
    Dim t As Long, l As Long, celgr As Range, titregr As String
    Application.ScreenUpdating = False
    If Not Intersect(Target, Range(plageclic)) Is Nothing Then
    li = Target.Row
    Set celgr = Target.Offset(2, 3)
    t = celgr.Top
    l = celgr.Left
    On Error Resume Next
    ActiveSheet.ChartObjects(1).Delete
    nomgr = "Repère " & Range("A" & li).Cells(1, 1).Value
    nbgr = Sheets("Graph").ChartObjects.Count
    For nugr = 1 To nbgr
    Set gr = Sheets("Graph").ChartObjects(nugr)
    titregr = gr.Chart.ChartTitle.Characters.Text
    If InStr(1, titregr, nomgr) > 0 Then
    gr.Copy
    ActiveSheet.Paste
    ActiveSheet.ChartObjects(1).Top = t
    ActiveSheet.ChartObjects(1).Left = l
    Exit For
    End If
    Next nugr
    End If
    ActiveSheet.Range("A1").Select
    Application.ScreenUpdating = True
    End Sub

    Cdlmnt
    0