Problème macro fonction décaler

Bonjour à tous,

Je débute en VBA et je suis confrontée à ma première vraie difficulté.

Je souhaite créer des graphiques qui se mettent à jour à chaque fois que j'ajoute des nouvelles données.

Pour cela j'ai renommé mes plages de données avec la fonction DECALER.

Le souci est que je dois faire une cinquantaine de graphiques dynamiques qui se mettent à jour automatiquement. J'aimerais donc automatiser la procédure sur mes 50 lignes pour éviter de renommer une cinquantaine de plages à la mano.

Idéalement, j'aimerais que la macro me demande de rentrer le nom de la plage (champs "nom dans le classeur" après avoir cliqué sur insertion>nom>définir), et la ligne sur lequel la fonction DECALER doit s'appliquer.

En enregistrant mes manip, j'ai réussi à obtenir cette macro et je souhaite maintenant l'étendre aux autres lignes. Est-ce possible ?

Sub nommer_plage()

'

' nommer_plage Macro

' nommer plage avec la fonction décaler

'

'

ActiveWorkbook.Names.Add Name:="produit1", RefersToR1C1:= _

"=OFFSET(Feuil1!R3C3,0,0,1,COUNTA((Feuil1!R3)-1))"

End Sub

Merci pour vos réponses !

Bonjour,

Une première proposition à tester..

Cdlt.

Option Explicit

Public Sub CreateRanges()
Dim nm As String, sRng As String
Dim lCol As Long, lRow As Long
Dim I As Long

    With ActiveSheet
        lCol = .Cells(2, Columns.Count).End(xlToLeft).Column
        lRow = .Cells(Rows.Count, 2).End(xlUp).Row
        For I = 3 To lRow
            nm = .Cells(I, 2)
            sRng = .Cells(I, 2).Offset(, 1).Resize(1, lCol - 2).Address
            ActiveWorkbook.Names.Add Name:=nm, RefersTo:=sRng
        Next I
    End With

End Sub

Bonjour,

Merci beaucoup pour cette réponse rapide! Malheureusement, cela ne fonctionne pas.

Re,

Désolé pour cette tentative mal ficelée.

Je répare...

Option Explicit

Public Sub CreateRanges()
Dim nm As String
Dim rng As Range
Dim lCol As Long, lRow As Long
Dim I As Long

    With ActiveSheet
        lCol = .Cells(2, Columns.Count).End(xlToLeft).Column
        lRow = .Cells(Rows.Count, 2).End(xlUp).Row
        For I = 3 To lRow
            nm = .Cells(I, 2)
            Set rng = .Cells(I, 2).Offset(, 1).Resize(1, lCol - 2)
            ActiveWorkbook.Names.Add Name:=nm, RefersTo:=rng
        Next I
    End With

    Set rng = Nothing

End Sub

Bonjour,

Merci Jean-Eric ! J'ai essayé la macro et rien ne se passe.

Idéalement, et si c'est possible, j'aimerais que la macro me demande de rentrer le nom de la plage et la ligne sur lequel la fonction DECALER doit s'appliquer.

Merci pour votre aide !

Re,

As-tu autorisé les macros à l'ouverture de ton fichier?

Je joins de nouveau le fichier avec des commentaires.

Cdlt.

Bonjour,

Sauf erreur de ma part, les plages ne sont pas nommés avec la fonction DECALER, donc lorsque j'insère un graphique avec pour abscisse les semaines et pour ordonnée la valeur du "produit1", le graphique ne se met pas à jour si j'ajoute des données (en semaine 7, 8 et 9 par exemple).

Re,

J'ai déclaré tes données en tableau et ajouté une procédure évènementielle.

A tester.

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).Range) Is Nothing Then
        CreateRanges
    End If

End Sub
Rechercher des sujets similaires à "probleme macro fonction decaler"