Graphique et cellules fusionnées
Mathilde
-
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
alors voilà je rencontre un problème dans ma macro. J'ai un tableau qui se fait automatiquement. Mon tableau est variable. Je peux avoir entre 2 et x colonnes. Mes deux premières lignes sont fusionnées. Je cherche à faire un graphique via les données de ce tableau. J'ai beaucoup travaillé sur vba c'est 3 derniers mois, notamment les tableaux et les graphiques. Sauf que la ma macro pour mon graphique ne prend pas en compte la plage de données que je lui dit. Je vous joint mon fichier:
http://www.cjoint.com/c/EHFjaAPcQod
Ma macro se situe dans le module : graphiqueConsommation.
Voila l'idée: Tout d'abord, ça serai un graphique en histogramme avec en axe des ordonnées les %. Je voudrai faire ressortir que le réceptionné, le reste à réceptionner et le reste à commander en valeur. Et en axe des abscisse, je voudrai le nom du fournisseur, N°Contrat et Mandants. J'ai changé les chiffres par confidentialité. Vous trouverai dans le fichier le graphique type que je souhaite avoir. Je vous met quand même ma macro :
Sub GraphiqueHistogramme()
Sheets("Consommation").Activate
Application.ScreenUpdating = False
Dercol = [IV1].End(xlToLeft).Column
plageGraphique = "B1:" & Chr(Dercol + 64) & "3,B6:" & Chr(Dercol + 64) & "8"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SetSourceData Source:=Range(plageGraphique), PlotBy:=xlRows
ActiveChart.ChartType = xlColumnStacked100
End Sub
Cette macro est incorporé dans une autre macro qui m'assure que le graphique 1 existe et qui va faire les modification sur ce graphique.
En espérant avoir été claire. Merci par avance pour votre aide!
alors voilà je rencontre un problème dans ma macro. J'ai un tableau qui se fait automatiquement. Mon tableau est variable. Je peux avoir entre 2 et x colonnes. Mes deux premières lignes sont fusionnées. Je cherche à faire un graphique via les données de ce tableau. J'ai beaucoup travaillé sur vba c'est 3 derniers mois, notamment les tableaux et les graphiques. Sauf que la ma macro pour mon graphique ne prend pas en compte la plage de données que je lui dit. Je vous joint mon fichier:
http://www.cjoint.com/c/EHFjaAPcQod
Ma macro se situe dans le module : graphiqueConsommation.
Voila l'idée: Tout d'abord, ça serai un graphique en histogramme avec en axe des ordonnées les %. Je voudrai faire ressortir que le réceptionné, le reste à réceptionner et le reste à commander en valeur. Et en axe des abscisse, je voudrai le nom du fournisseur, N°Contrat et Mandants. J'ai changé les chiffres par confidentialité. Vous trouverai dans le fichier le graphique type que je souhaite avoir. Je vous met quand même ma macro :
Sub GraphiqueHistogramme()
Sheets("Consommation").Activate
Application.ScreenUpdating = False
Dercol = [IV1].End(xlToLeft).Column
plageGraphique = "B1:" & Chr(Dercol + 64) & "3,B6:" & Chr(Dercol + 64) & "8"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SetSourceData Source:=Range(plageGraphique), PlotBy:=xlRows
ActiveChart.ChartType = xlColumnStacked100
End Sub
Cette macro est incorporé dans une autre macro qui m'assure que le graphique 1 existe et qui va faire les modification sur ce graphique.
En espérant avoir été claire. Merci par avance pour votre aide!
A voir également:
- Graphique et cellules fusionnées
- Changer carte graphique - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Graphique sparkline - Guide
- Graphique camembert excel - Guide
2 réponses
Bonjour
Voilà
Cdlt
Voilà
Sub GraphiqueHistogramme() Application.ScreenUpdating = False Sheets("Consommation").Activate Dercol = ActiveSheet.Columns([IV3].End(xlToLeft).Column).Address(ReferenceStyle:=xlA1) Dercol = Left(Dercol, InStr(1, Dercol, ":", 1) - 1) plageGraphique = "B1:" & Dercol & "3,B6:" & Dercol & "8" ActiveSheet.ChartObjects("Graphique 2").Activate ActiveChart.SetSourceData Source:=Range(plageGraphique), PlotBy:=xlRows End Sub
Cdlt
Bonjour
Ton problème est ici
Chr(Dercol + 64)
ne fonctionnera que pour une colonne de A à Z
Une autre possibilité (salut à Frenchie83 au passage)
Cordialement
Ton problème est ici
Chr(Dercol + 64)
ne fonctionnera que pour une colonne de A à Z
Une autre possibilité (salut à Frenchie83 au passage)
Public Sub plageGraph() Const FG = "Consommation" Dim plage1 As String, plage2 As String, plage As String Dim cofin As Long With Sheets(FG) cofin = .Cells(3, Columns.Count).End(xlToLeft).Column plage1 = .Range(.Cells(1, 2), .Cells(3, cofin)).Address plage2 = .Range(.Cells(6, 2), .Cells(8, cofin)).Address plage = plage1 & "," & plage2 End With End Sub
Cordialement
Bonjour,
Chr(Dercol+64) ne fonctionne pas pour une colonne de A à Z? C'est-à-dire? juste pour ce cas? ou en général? Parce que j'utilise cette formule pour un autre tableau (sans cellule fusionnée) et ça marche mais je ne voudrai pas que cela me pose problème par la suite.
Comment j'introduis ce bout de code à ma macro? (je n'ai encore jamais utilisée dePublic Sub)
Cordialement
Chr(Dercol+64) ne fonctionne pas pour une colonne de A à Z? C'est-à-dire? juste pour ce cas? ou en général? Parce que j'utilise cette formule pour un autre tableau (sans cellule fusionnée) et ça marche mais je ne voudrai pas que cela me pose problème par la suite.
Comment j'introduis ce bout de code à ma macro? (je n'ai encore jamais utilisée dePublic Sub)
Cordialement
Bonjour Mathilde, Bonjour ccm81
Chr(Dercol+64) ne fonctionne que pour une colonne de A à Z, au delà de la valeur "Z", il faut appliquer une autre méthode.
Soit:
-récupérer l'adresse de la dernière colonne (la méthode que j'ai employé)
ou bien
-récupérer le N° de la dernière colonne ( méthode utilisée par ccm81)
Que ce soit l'une ou l'autre des méthodes n'a aucune importance, ça fonctionne pareil.
Quant à votre question sur "Public sub" et Sub, même effet.
Cdlt
Chr(Dercol+64) ne fonctionne que pour une colonne de A à Z, au delà de la valeur "Z", il faut appliquer une autre méthode.
Soit:
-récupérer l'adresse de la dernière colonne (la méthode que j'ai employé)
ou bien
-récupérer le N° de la dernière colonne ( méthode utilisée par ccm81)
Que ce soit l'une ou l'autre des méthodes n'a aucune importance, ça fonctionne pareil.
Quant à votre question sur "Public sub" et Sub, même effet.
Cdlt
Bonjour Zoul67,
Merci pour la petite expliquation!
D'ailleurs j'ai une dernière question, j'utilise ceci pour d'autres graphiques :
Dercol = [IV49].End(xlToLeft).Column
Set plageC = Union(Range(Cells(49, 1), Cells(51, Dercol)), Range(Cells(53, 1), Cells(53, Dercol)))
Ceci ne pose aucun problème? Ca peut aller au delà de Z?
Cordialement
Merci pour la petite expliquation!
D'ailleurs j'ai une dernière question, j'utilise ceci pour d'autres graphiques :
Dercol = [IV49].End(xlToLeft).Column
Set plageC = Union(Range(Cells(49, 1), Cells(51, Dercol)), Range(Cells(53, 1), Cells(53, Dercol)))
Ceci ne pose aucun problème? Ca peut aller au delà de Z?
Cordialement
merci beaucoup pour l'aide ça marche nickel!
Bonne journée