Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé merveilleux.
Par contre, il est limité à trois colonnes et 4 lignes. J'aimerais rendre ce
code dynamique peut importe le nombre de colonne ou de ligne que j'ai. J'ai
alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé merveilleux.
Par contre, il est limité à trois colonnes et 4 lignes. J'aimerais rendre ce
code dynamique peut importe le nombre de colonne ou de ligne que j'ai. J'ai
alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé merveilleux.
Par contre, il est limité à trois colonnes et 4 lignes. J'aimerais rendre ce
code dynamique peut importe le nombre de colonne ou de ligne que j'ai. J'ai
alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé merveilleux.
Par contre, il est limité à trois colonnes et 4 lignes. J'aimerais rendre ce
code dynamique peut importe le nombre de colonne ou de ligne que j'ai. J'ai
alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé merveilleux.
Par contre, il est limité à trois colonnes et 4 lignes. J'aimerais rendre ce
code dynamique peut importe le nombre de colonne ou de ligne que j'ai. J'ai
alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé merveilleux.
Par contre, il est limité à trois colonnes et 4 lignes. J'aimerais rendre ce
code dynamique peut importe le nombre de colonne ou de ligne que j'ai. J'ai
alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne ou
de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne ou
de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne ou
de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le nouveau
code inverse mon axe des X et la légende, et en plus, pour les lignes, il ne
prend que 4 lignes. Pour ce qui est des colonnes, aucun problème, il ajoute
mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle feuille
d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne ou
de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le nouveau
code inverse mon axe des X et la légende, et en plus, pour les lignes, il ne
prend que 4 lignes. Pour ce qui est des colonnes, aucun problème, il ajoute
mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle feuille
d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" <i@v> a écrit dans le message de news:
uX1s0$yiJHA.4028@TK2MSFTNGP03.phx.gbl...
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne ou
de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le nouveau
code inverse mon axe des X et la légende, et en plus, pour les lignes, il ne
prend que 4 lignes. Pour ce qui est des colonnes, aucun problème, il ajoute
mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle feuille
d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne ou
de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué les
pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :
Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" <i@v> a écrit dans le message de news:
uX1s0$yiJHA.4028@TK2MSFTNGP03.phx.gbl...
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet qu'un
seul graphique et c'est sur la page 1. Comme excel accepte une seule fois un
nom de plage, il est impossible de faire plusieurs tableau sur la même
feuille et d'utiliser la macro. Est-ce possible de faire quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" a écrit dans le message de news:bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet qu'un
seul graphique et c'est sur la page 1. Comme excel accepte une seule fois un
nom de plage, il est impossible de faire plusieurs tableau sur la même
feuille et d'utiliser la macro. Est-ce possible de faire quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" <i@v> a écrit dans le message de news:
OtIymZ4iJHA.500@TK2MSFTNGP06.phx.gbl...
bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :
Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" <i@v> a écrit dans le message de news:
uX1s0$yiJHA.4028@TK2MSFTNGP03.phx.gbl...
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet qu'un
seul graphique et c'est sur la page 1. Comme excel accepte une seule fois un
nom de plage, il est impossible de faire plusieurs tableau sur la même
feuille et d'utiliser la macro. Est-ce possible de faire quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" a écrit dans le message de news:bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
bonjour Marc,
il faut changer Sheets(1) par ActiveSheet
et modifier la formule pour le nom de "Plage" par
ÞCALER(!$A$1;;;NBVAL(!$A:$A);NBVAL(!$1:$1))
Sub commentaire()
Set xx = ActiveSheet.Range("Plage")
ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=xx,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(ActiveSheet.Rows(1))
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error Resume Next
For i = 1 To
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
isabelle
marc a écrit :Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet
qu'un seul graphique et c'est sur la page 1. Comme excel accepte une
seule fois un nom de plage, il est impossible de faire plusieurs tableau
sur la même feuille et d'utiliser la macro. Est-ce possible de faire
quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" a écrit dans le message de news:bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les
lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
bonjour Marc,
il faut changer Sheets(1) par ActiveSheet
et modifier la formule pour le nom de "Plage" par
ÞCALER(!$A$1;;;NBVAL(!$A:$A);NBVAL(!$1:$1))
Sub commentaire()
Set xx = ActiveSheet.Range("Plage")
ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=xx,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(ActiveSheet.Rows(1))
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error Resume Next
For i = 1 To
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
isabelle
marc a écrit :
Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet
qu'un seul graphique et c'est sur la page 1. Comme excel accepte une
seule fois un nom de plage, il est impossible de faire plusieurs tableau
sur la même feuille et d'utiliser la macro. Est-ce possible de faire
quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" <i@v> a écrit dans le message de news:
OtIymZ4iJHA.500@TK2MSFTNGP06.phx.gbl...
bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :
Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les
lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" <i@v> a écrit dans le message de news:
uX1s0$yiJHA.4028@TK2MSFTNGP03.phx.gbl...
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
bonjour Marc,
il faut changer Sheets(1) par ActiveSheet
et modifier la formule pour le nom de "Plage" par
ÞCALER(!$A$1;;;NBVAL(!$A:$A);NBVAL(!$1:$1))
Sub commentaire()
Set xx = ActiveSheet.Range("Plage")
ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=xx,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(ActiveSheet.Rows(1))
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error Resume Next
For i = 1 To
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
isabelle
marc a écrit :Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet
qu'un seul graphique et c'est sur la page 1. Comme excel accepte une
seule fois un nom de plage, il est impossible de faire plusieurs tableau
sur la même feuille et d'utiliser la macro. Est-ce possible de faire
quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" a écrit dans le message de news:bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les
lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Rebonjour Isabelle
Et est-ce que ce code va permettre de faire plus d'un graphique par page?
J'apprécie sincèrement ton aide
Merci
Marc
"isabelle" a écrit dans le message de news:
Ob$bonjour Marc,
il faut changer Sheets(1) par ActiveSheet
et modifier la formule pour le nom de "Plage" par
ÞCALER(!$A$1;;;NBVAL(!$A:$A);NBVAL(!$1:$1))
Sub commentaire()
Set xx = ActiveSheet.Range("Plage")
ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=xx,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(ActiveSheet.Rows(1))
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error Resume Next
For i = 1 To
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
isabelle
marc a écrit :Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet
qu'un seul graphique et c'est sur la page 1. Comme excel accepte une
seule fois un nom de plage, il est impossible de faire plusieurs tableau
sur la même feuille et d'utiliser la macro. Est-ce possible de faire
quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" a écrit dans le message de news:bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les
lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Rebonjour Isabelle
Et est-ce que ce code va permettre de faire plus d'un graphique par page?
J'apprécie sincèrement ton aide
Merci
Marc
"isabelle" <i@v> a écrit dans le message de news:
Ob$NVA6iJHA.3380@TK2MSFTNGP04.phx.gbl...
bonjour Marc,
il faut changer Sheets(1) par ActiveSheet
et modifier la formule pour le nom de "Plage" par
ÞCALER(!$A$1;;;NBVAL(!$A:$A);NBVAL(!$1:$1))
Sub commentaire()
Set xx = ActiveSheet.Range("Plage")
ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=xx,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(ActiveSheet.Rows(1))
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error Resume Next
For i = 1 To
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
isabelle
marc a écrit :
Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet
qu'un seul graphique et c'est sur la page 1. Comme excel accepte une
seule fois un nom de plage, il est impossible de faire plusieurs tableau
sur la même feuille et d'utiliser la macro. Est-ce possible de faire
quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" <i@v> a écrit dans le message de news:
OtIymZ4iJHA.500@TK2MSFTNGP06.phx.gbl...
bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :
Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les
lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" <i@v> a écrit dans le message de news:
uX1s0$yiJHA.4028@TK2MSFTNGP03.phx.gbl...
et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :
Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
Rebonjour Isabelle
Et est-ce que ce code va permettre de faire plus d'un graphique par page?
J'apprécie sincèrement ton aide
Merci
Marc
"isabelle" a écrit dans le message de news:
Ob$bonjour Marc,
il faut changer Sheets(1) par ActiveSheet
et modifier la formule pour le nom de "Plage" par
ÞCALER(!$A$1;;;NBVAL(!$A:$A);NBVAL(!$1:$1))
Sub commentaire()
Set xx = ActiveSheet.Range("Plage")
ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=xx,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(ActiveSheet.Rows(1))
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error Resume Next
For i = 1 To
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
isabelle
marc a écrit :Bonjour Isabelle
Oui, ça fonctionne bien.
Par contre, j'ai un autre question. Dans ce cas-ci, la macro ne permet
qu'un seul graphique et c'est sur la page 1. Comme excel accepte une
seule fois un nom de plage, il est impossible de faire plusieurs tableau
sur la même feuille et d'utiliser la macro. Est-ce possible de faire
quelque chose?
Merci énormément de ton aide.
Marc
"isabelle" a écrit dans le message de news:bonjour Marc,
voici l'exemple : http://cjoint.com/?cmoWywfIQB
dit moi si ça va ?
isabelle
marc a écrit :Bonjour Isabelle
Merci de prendre le temps de répondre à ma question. Voici, avec tes
explications, le nouveau code. Par contre, il y a deux problèmes. Le
nouveau code inverse mon axe des X et la légende, et en plus, pour les
lignes, il ne prend que 4 lignes. Pour ce qui est des colonnes, aucun
problème, il ajoute mes colonnes au fur et à mesure, mais pas les
lignes.
Aussi, peut-on ajuster ce code pour l'utiliser sur n'importe qu'elle
feuille d'un fichier, Car ce code ne fonctionne que sur la feuille #1.
Merci de ton aide
marc
Voici le nouveau code
Sub commentaire()
Set graph = Sheets("Feuil1").Range("Tableau")
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=graph,
PlotBy:=xlColumns
On Error Resume Next
n = Application.CountA(Sheets("Feuil1").Rows(1))
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub
"isabelle" a écrit dans le message de news:
uX1s0$et aussi modifier
n = 3 ' nombre de mois
par
n = Application.CountA(Sheets("Feuil1").Rows(1))
isabelle
marc a écrit :Bonjour à vous tous.
J'ai trouvé sur le web un code de JB pour un graphique empilé
merveilleux. Par contre, il est limité à trois colonnes et 4 lignes.
J'aimerais rendre ce code dynamique peut importe le nombre de colonne
ou de ligne que j'ai. J'ai alors besoin de votre aide.
Voici un document exemple. si vous exécuter la macro commentaire (par
contre, je n'ai pas fait de bouton), vous verrez le graphique indiqué
les pourcentages.
Voici le document.
http://cjoint.com/?clvgjlhe70
Merci de votre aide
marc
Voici le code
Sub commentaire()
On Error Resume Next
n = 3 ' nombre de mois
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).ApplyDataLabels
Type:=xlDataLabelsShowLabel
Next
On Error GoTo 0
For i = 1 To
Sheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count
tot = 0
For col = 1 To n
tot = tot +
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i)
Next col
For col = 1 To n
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Font.Size
= 6
y =
Application.Index(Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Values,
i) / tot
Sheets(1).ChartObjects(1).Chart.SeriesCollection(col).Points(i).DataLabel.Text
= Format(y, "0.00%")
Next col
Next i
End Sub