Graphique automatisé

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Maohtsukai

XLDnaute Nouveau
Bonjour à tous,

Je viens quemander de l'aide afin de réaliser une macro qui me permettrait d'avoir des graphs automatisés par rapport à des changements dans la table des données utilisée.

En effet, j'ai des graphs qui sont déterminés par une table de données, auquelle je peux rajouter une colonne ou en retirer une.

J'ai essayé avec la macro suivante mais il ne reconnait pas le range utilisé. Si quelqu'un pouvait m'aider, je le remercierai grandement ^_^

Code:
ligne = 3

Sheets("Group").Select

For n = 8 To 256
    If Cells(ligne, n) = "" Then
    Columns(n).Insert
    Cells(ligne, n - 1).Select
        Selection.AutoFill Destination:=Range(Cells(ligne, n), Cells(ligne, n - 1)), Type:=x1FillDefault
        Range(Cells(ligne, n), Cells(ligne, n - 1)).Select
    ActiveWindow.Visible = False
    Windows("GRAPHSTest1.xls").Activate
    ActiveSheet.ChartObjects("Chart 4").Activate
    ActiveChart.ChartArea.Select
    ActiveChart.SetSourceData Source:=Sheets("Group").Range( _
        "F3,H3:AD3,F5:F11", "(Cells(5,8):Cells(11,n)"), PlotBy:=x1Rows

Voila voila...
 
Re : Graphique automatisé

Re Hasco et merci de t'interesser à ça ^_^

Donc... non ça marche pas... il me met toujours le message d'erreur et le mode DEBUG, donc...

Je ne sais pas trop comment faire, à la base j'avais mis un range bien précis (H5:AD11) mais si j'ajoute plus d'une colonne cela ne marche plus malheureusement.

A+
 
Re : Graphique automatisé

Re,

Il manque le classeur ("GRAPHSTest1.xls") qui semble contenir les données à afficher.


A partir de quel classeur tu appèles la macro "GRAPHSTest1.xls" que je n'ai pas ou "Book3Chart1.xls" dans lequel il n'y a pas de feuille GROUP.

il n'y a pas non plus de "Chart 4" dans le classeur donné mais "Chart 1"

Pour ce qui est du SetDataSource
Essaie: union(Range("F3,H3:AD3,F5:F11"),Cells(5, 8), Cells(11, n))

re-voies tout ceci et donne nous quelque chose de propre.

A+
 
Re : Graphique automatisé

Re Hasco,

En fait le Classeur Graph1Test.xls est le classeur de base mais comme il fait plus de 48 ko, et que je ne peux pas le zipper de là ou je suis, bah pas possible que je te l'envoie...

Ensuite la Macro 1 est appelée du classeur Book3Chart1.xls, mais même avec ton remplacement par Union(Range...Cells()) cela ne marche pas...

Le reste des erreurs sont des erreurs de remplacement, parce que j'ai reinséré la macro dans un nouveau classeur et donc il fallait que je redonne un nom à toutes les données. Voila Voila

Le nouveau classeur avec l'essai de ta formule
 

Pièces jointes

Re : Graphique automatisé

RE,

La macro modifiée:

le setDataSource fonctionne. Par contre il faudra je pense que du vérifie tes indices de ligne et ou colonne. Mets un point d'arrêt sur la ligne SetDatasource pour vérifier les adresses contenues dans la variable Adr.

Quant au Plotby: xl1 je l'ai remplacé par xlByRows, à toi de voir

Code:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 31/10/2008 by Consolis
'
Dim adr As String
    ligne = 3
    Sheets("Sheet1").Select
    With Sheets("Sheet1")
        For n = 8 To 256
            If .Cells(ligne, n) = "" Then
                .Columns(n).Insert
                .Cells(ligne, n - 1).Select
                Selection.AutoFill Destination:=Range(.Cells(ligne, n), .Cells(ligne, n - 1)), Type:=x1FillDefault
                .Range(.Cells(ligne, n), .Cells(ligne, n - 1)).Select
                ActiveWindow.Visible = False
                Windows("Book3Chart1.xls").Activate
                ActiveSheet.ChartObjects("Chart 1").Activate
                ActiveChart.ChartArea.Select
                adr = Union(Range("F3,H3:AD3,F5:F11"), Range(Sheets("Sheet1").Cells(5, 8), Sheets("Sheet1").Cells(11, n - 1))).Address
                ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(adr), PlotBy:=xlRows
                Exit For
            End If
        Next n
    End With
End Sub

A+
 
Re : Graphique automatisé

Je reviens sur cette page, après quelques jours de reflexions que je me suis laissé, il y a encore quelque chose que je ne comprend pas... Alors si quelqu'un voit cette réponse et peut m'aider, je lui donnerai ma reconnaissance éternelle ^_^

Mon probleme au niveau de ces graphiques est que lorsque je lance la macro une premiere fois, tout va bien, mais au bout de la deuxieme fois, le range selectionné change tout seul, mon axe des abscisses n'est plus correct, etc...

je vous mets ma macro :

Code:
Sub AjouterColonneGraph()
'
' Macro1 Macro
' Macro recorded 30/10/2008 by Consolis
'
Dim adr As String
ligne = 3

Sheets("Group").Select
With Sheets("Group")

    For n = 8 To 256
        If .Cells(ligne, n) = "" Then
            .Columns(n).Insert
            .Cells(ligne, n - 1).Select
            Selection.AutoFill Destination:=Range(Cells(ligne, n), Cells(ligne, n - 1)), Type:=x1FillDefault
            .Range(Cells(ligne, n), Cells(ligne, n - 1)).Select
            
            ActiveWindow.Visible = False
            Windows("GRAPHSTest1.xls").Activate
            ActiveSheet.ChartObjects("Chart 4").Activate
            ActiveChart.ChartArea.Select
            adr = Union(Range("$F$3,$H$3:$AD$3,$F$5:$F$11"), Range(Sheets("Group").Cells(5, 8), Sheets("Group").Cells(11, n))).Address
            ActiveChart.SetSourceData Source:=Sheets("Group").Range(adr), PlotBy:=xlRows
            
            ActiveWindow.Visible = False
            Windows("GRAPHSTest1.xls").Activate
            ActiveSheet.ChartObjects("Chart 15").Activate
            ActiveChart.ChartArea.Select
            adr = Union(Range("$F$3,$H$3:$AD$3,$F$43:$F$48"), Range(Sheets("Group").Cells(43, 8), Sheets("Group").Cells(48, n))).Address
            ActiveChart.SetSourceData Source:=Sheets("Group").Range(adr), PlotBy:=xlRows
            
            ActiveWindow.Visible = False
            Windows("GRAPHSTest1.xls").Activate
            ActiveSheet.ChartObjects("Chart 16").Activate
            ActiveChart.ChartArea.Select
            adr = Union(Range("$F$3,$H$3:$AD$3,$F$82:$F$88"), Range(Sheets("Group").Cells(82, 8), Sheets("Group").Cells(88, n))).Address
            ActiveChart.SetSourceData Source:=Sheets("Group").Range(adr), PlotBy:=xlRows
            
            ActiveWindow.Visible = False
            Windows("GRAPHSTest1.xls").Activate
            ActiveSheet.ChartObjects("Chart 22").Activate
            ActiveChart.ChartArea.Select
            adr = Union(Range("$F3,$H3:$AD$3,$F$126:$F$132"), Range(Sheets("Group").Cells(126, 8), Sheets("Group").Cells(132, n))).Address
            ActiveChart.SetSourceData Source:=Sheets("Group").Range(adr), PlotBy:=xlRows
            Exit For
        End If
    Next n
    
    Application.Run ("MNU_eTOOLS_REFRESH") 'Application.RUN ("OnMnuReadComment")

'Keyboard Shortcut: Ctrl+t
End With
End Sub

Et voila !! Merci pour tout
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
536
Réponses
5
Affichages
838
  • Question Question
Microsoft 365 Programme trop lent
Réponses
12
Affichages
1 K
Réponses
2
Affichages
2 K
Compte Supprimé 979
C
  • Question Question
Réponses
1
Affichages
1 K
Retour