Graphique plage décaler

Bonsoir

Comment alimenter par "vba" ou plage nommée le graphique de sorte qu'au fur et à mesure que je rentre des données dans les colonnes vers la droite que le graphique suive?

Merci pour votre aide à l'avance!

Bonjour

La solution PowerQuery proposée sur ce fil, le fait naturellement https://forum.excel-pratique.com/excel/graphique-evolutif-178030

Hello Chris

Je ne connais pas cette approche et je veux rester avec la logique incluse dans mon projet.

J'apprécie ton retour sur mon post!

Merci

RE

Si tu veux passer pas une plage nommée avec DECALER, cela nécessite de créer autant de noms que de séries+1

http://www.excel-formations.fr/Trucs_astuces/GRAPH01.php

Je laisse les VBistes te proposer la modifications de la source du graphique par VBA

Merci

Bonjour,

Collez ceci dans le module de la feuille "Recovery"

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DerLig As Long, DerCol As Long, i As Long
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Not Intersect(Target, Range("B1:M23")) Is Nothing Then
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        DerCol = Range("B1").End(xlToRight).Column
        Set PlageSource = Range("=Recovery!" & Cells(3, "A").Address & ":" & Cells(DerLig, DerCol).Address)        
        ActiveSheet.ChartObjects("Graphique 5").Activate
        With ActiveChart
            .SetSourceData Source:=PlageSource
            For i = 2 To DerCol
                .SeriesCollection(i - 1).Name = Cells(1, i) 'réaffecte les dates à chaque série
            Next i
        End With
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

bonjour,

si vous déplacer la ligne 2 (sommes) dehors, crée un tableau "TBL_Recovery" de vos données et puis une plage nommée "Recovery" de ce tableau&entêtes.

Et maintenant, dans la sélection des données du graphique, vous changez la plage en "=Recovery!Recovery" et OK. Cela change directement en "=Recovery!$A$2:$..$23", mais cela n'a pas d'importance. Si vous ajoutez ou supprimez une colonne, cela se met à jour tout seul. Peut-être vous devez aussi agrandir le légende.

image

Bonjour

si vous déplacer la ligne 2 (sommes) dehors, crée un tableau "TBL_Recovery" de vos données et puis une plage nommée "Recovery" de ce tableau&entêtes.

Et maintenant, dans la sélection des données du graphique, vous changez la plage en "=Recovery!Recovery" et OK. Cela change directement en "=Recovery!$A$2:$..$23", mais cela n'a pas d'importance. Si vous ajoutez ou supprimez une colonne, cela se met à jour tout seul. Peut-être vous devez aussi agrandir le légende.

Effectivement il suffit d'intervertir les deux 1ère lignes et mettre la partie remplie (A2:G23) sous forme de tableau structuré

Il n'y a rien d'autre à faire : toute année inscrite en ligne2 après G2, adaptera, et le tableau, et le graphique...

Bonjour à vous deux

Merci pour les propositions!

Je préfère une solution basée sur "noms de range"

Bonjour,

La solution VBA ne vous convient pas? pourtant c'était bien ce qui était demandé initialement:

Comment alimenter par "vba" ou plage nommée le graphique

Cdlt

Bonsoir

Oui, je suis ouvert pour du vba aussi.

Ton code dans mon projet ne fonctionne pas à tous les coups.

Je suis en train d’investiguer le tout.

Merci

C'est bizarre, parce que j'ai fait une multitude d'essais et ça marche bien, citez-moi des cas de figures où cela ne fonctionne pas.

Hello

Le code fonctionne très bien.

Pour mon projet, quand je rentre des données, je ne veux pas que la plage reste activée car je dois cliquer ailleurs toujours pour la désélectionner.

Possible de faire en sorte quand je clique sur "Enter" que le curseur se positionne sur la cellule suivante.

C'est le seul point qui semble poser problème.

Merci beaucoup!

Bonjour;

Si c'est la dernière cellule qui est active alors, on sélectionne sur la date suivante, sinon on sélectionne la cellule en dessous, cela vous convient-t-il?

Me dire si vous préférez autre chose.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DerLig As Long, DerCol As Long, i As Long
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Not Intersect(Target, Range("B1:M23")) Is Nothing Then
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        DerCol = Range("B1").End(xlToRight).Column
        Set PlageSource = Range("=Recovery!" & Cells(3, "A").Address & ":" & Cells(DerLig, DerCol).Address)
        ActiveSheet.ChartObjects("Graphique 5").Activate
        With ActiveChart
            .SetSourceData Source:=PlageSource
            For i = 2 To DerCol
                .SeriesCollection(i - 1).Name = Cells(1, i) 'réaffecte les dates à chaque série
            Next i
        End With
    End If

    If Target.Row = DerLig Then
        Cells(1, DerCol + 1).Select
    Else
        Cells(Target.Row + 1, Target.Column).Select
    End If
Sortie:
    Application.EnableEvents = True
End Sub

CDlt

Bonsoir

Un grand merci pour le support.

Ton code fonctionne parfaitement dans mon projet.

Bonne soirée!

Rechercher des sujets similaires à "graphique plage decaler"