Combinaison "Cells" et "Range"

agd

XLDnaute Nouveau
Bonjour,

Bon d'habitude, en fouinant, j'arrive toujours a m'en sortir mais la j'avoue je cale.

Avant-Propos :

Je suis entrain de réaliser une macro VBA qui consiste à :

1 - Copier-coller dans l'onglet "DATA", un tableau de bords issue d'un autre fichier Excel => Fait
2 - De réaliser dans l'onglet "TCD", un tableau Croisé Dynamique => Fait
3 - De réaliser certaine opération mathématiques statistiques issues du TCD => Fait
4 - De réaliser un graphique multicourbles issues des opérations mathématiques => C'est là que je coince.

NOTA :
Ce travail je dois le réaliser plusieurs fois par semaine. il est donc primordiale de ne pas rendre la macro statique à une série de ligne et de colonne spécifique puisque le nombre de ligne et de colonne du TCD va croissant de jour en jour.
Actuellement le Tableau de bords dont est issu le TCD contient plusieurs centaines de lignes pour 21 colonnes.
La résultante est que le TCD gagne environ 3 à 4 colonnes supplémentaire par semaine.

Détail du Problème rencontré :
Pour la réalisation de l'étape 4, je me suis aidé de l'enregistreur de macro.
Celui-ci m'a écrit naturellement le code suivant :

Code:
Range("A20").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
With ActiveSheet.ChartObjects(1)
    .Name = "Graphique_JOUR"
End With
ActiveChart.SeriesCollection.NewSeries

ActiveChart.SeriesCollection(1).Values = "='Journalier'!$B$10:$Y$10"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Values = "='Journalier'!$B$11:$Y$11"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).Values = "='Journalier'!$B$12:$Y$12"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Values = "='Journalier'!$B$13:$Y$13"
ActiveChart.SeriesCollection(4).XValues = "='Journalier'!$B$2:$Y$2"

Ce code fonctionne mais comme expliqué en "Nota", je peux pas garder l'expression $B$10:$Y$10 dans cet état puisque la sélection des données de ma courbe ne seront pas toujours au même endroit sur la page.

Pour ce faire, j'ai déclaré plusieurs variables : LigneX, ColonneMin, et ColonneMax
ces variables sont déterminées par une série de boucles "For - Next" qui me permettent de savoir ou sont les lignes que je souhaite intégrer dans mon graphiques.

L'idée étant de remplacer l'écriture $B$10:$Y$10 par : Cells(LigneX, ColonneMin) :Cells(LigneX, ColonneMax)

Mais voila, j'ai beau tourner cette phrase dans tous les sens, je tombe invariablement sur la même erreur

Code d'éxécution'1004':
Erreur définie par l'application ou par l'objet.

si vous pouviez m'aider a écrire ce bout de code, je vous en serait tres reconnaissant.

PS : Je ne peux vous joindre de fichier, celui ci contenant des données sensibles.

Merci d'avance.

Cordialement

agd
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Combinaison "Cells" et "Range"

Bonjour Agd et bienvenu, bonjour le forum,

Essaie comme ça :
Code:
Range(Cells(LigneX, ColonneMin), Cells(LigneX, ColonneMax))

p.s. c'est quoi Agd ? ça me rappelle ma ville natale Agde...

[Édition]
Bonjour Efgé on s'est croisé...
 

agd

XLDnaute Nouveau
Re : Combinaison "Cells" et "Range"

Bonjour,

Merci pour ta réponse Efgé.

=> Erreur de compilation
Erreur de syntaxe

du je pense au fait que la ligne contient déjà des guillemets :

ci-dessous la ligne au complet :
ActiveChart.SeriesCollection(1).Values = "='Journalier'!Cells(LigneX & ColonneMin).address & ":" & Cells(LigneX & ColonneMax).address"
 

Efgé

XLDnaute Barbatruc
Re : Combinaison "Cells" et "Range"

Re
Bonjour Robert
....Efgé.

=> Erreur de compilation
Erreur de syntaxe

du je pense au fait que la ligne contient déjà des guillemets :

ci-dessous la ligne au complet :
ActiveChart.SeriesCollection(1).Values = "='Journalier'!Cells(LigneX & ColonneMin).address & ":" & Cells(LigneX & ColonneMax).address"

Tu n'as pas recopié ma proposition:
ActiveChart.SeriesCollection(1).Values = "='Journalier'!" & Cells(LigneX, ColonneMin).Address & ":" & Cells(LigneX, ColonneMax).address
Et pas de " à la fin.

Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Combinaison "Cells" et "Range"

Bonjour le fil, bonjour le forum,

Peut-être comme ça, viel ange gardien :
Code:
With Sheets("Journalier")
    ActiveChart.SeriesCollection(1).Values = "=Journalier!" & .Range(.Cells(LigneX, ColonneMin), .Cells(LigneX, ColonneMax)).Address
End With

Sinon, l'histoire de fichier aux données sensibles n'est que baratin de Ruel Malmaison... Rien ne t'empêche de recréer un fichier exemple avec la même structure que ton fichier original, d'y coller un poignée de données bidons, nécessaires à l'exemple et de nous envoyer ce magnifique chef-d'œuvre en pièce jointe...

[Édition]
Arf ! nos réponses se sont croisées... On n'attend ton fichier..
 
Dernière édition:

agd

XLDnaute Nouveau
Re : Combinaison "Cells" et "Range"

Re Robert, C'est justement ce que j'ai fait :p

J'essaie ta dernière option
 

Pièces jointes

  • test.xlsm
    32.4 KB · Affichages: 33
  • test.xlsm
    32.4 KB · Affichages: 41
  • test.xlsm
    32.4 KB · Affichages: 54

Robert

XLDnaute Barbatruc
Repose en paix
Re : Combinaison "Cells" et "Range"

Bonjour le fil, bonjour le forum,

Oui j'avais vu (mais après...). En revanche, pas d'onglet Journalier dans ton exemple donc plantage...
Avec le code ci-dessous :
Code:
ActiveChart.SeriesCollection.NewSeries
With Sheets("TCD")
    ActiveChart.SeriesCollection(1).Values = "='Journalier'!" & .Range(.Cells(p, ColonneMin), .Cells(p, ColonneMax)).Address
End With
'ActiveChart.SeriesCollection.NewSeries
'ActiveChart.SeriesCollection(2).Values = "='Journalier'!$B$11:$Y$11"
'ActiveChart.SeriesCollection.NewSeries
'ActiveChart.SeriesCollection(3).Values = "='Journalier'!$B$12:$Y$12"
'ActiveChart.SeriesCollection.NewSeries
'ActiveChart.SeriesCollection(4).Values = "='Journalier'!$B$13:$Y$13"
'ActiveChart.SeriesCollection(4).XValues = "='Journalier'!$B$2:$Y$2"

ActiveSheet.ChartObjects(1).Left = Range("A20").Left
ActiveSheet.ChartObjects(1).Top = Range("A20").Top

J'ai obtenu ce magnifique graphique :
Capture.jpg

Donc ça devrait marcher si tu finis le travail...
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    45.5 KB · Affichages: 64
  • Capture.jpg
    Capture.jpg
    45.5 KB · Affichages: 54

agd

XLDnaute Nouveau
Re : Combinaison "Cells" et "Range"

J'ai trouvé

1 - Faut renommer l'onglet : mettre "Journalier" au lieu de TCD

2 - ActiveChart.SeriesCollection(1).Values = "=NomOnglet!" & Range(Cells(Ligne, ColonneMin), Cells(Ligne, ColonneMax - 1)).Address

En PJ, le fichier corrigé
 

Pièces jointes

  • test (fonctionnel).xlsm
    35.6 KB · Affichages: 28

Discussions similaires

Réponses
8
Affichages
496

Statistiques des forums

Discussions
312 156
Messages
2 085 815
Membres
102 991
dernier inscrit
remyexcel