Graphique et cellules fusionnées

Fermé
Mathilde - 31 août 2015 à 11:07
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 1 sept. 2015 à 10:42
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!
A voir également:

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
31 août 2015 à 16:20
Bonjour
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
0
Bonjour,
merci beaucoup pour l'aide ça marche nickel!
Bonne journée
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 31/08/2015 à 16:29
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)

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
0
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
1 sept. 2015 à 09:56
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
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
1 sept. 2015 à 10:01
Bonjour,

Chr renvoie un caractère suivant le code ASCII avec :
- Chr(65)="A"
- Chr(66)="B"
-...
-Chr(90)="Z"
Si ta dernière colonne est AA, tu peux donc pas utiliser cette méthode.

Public Sub, c'est comme une autre Sub, tu écris juste Public devant.

A+
0
Bonjour Frenchie83,
Autant pour moi, j'avais mal lu la réponse de ccm81!
Merci beaucoup pour la rapidité à me répondre encore une fois! Et merci pour l'aide!
Bonne journée à vous deux!
0
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
0