Graphique avec plage variable

Wishguu

XLDnaute Nouveau
Bonjour ou rebonjour,

Je souhaite créer un graphique à partir d'une quantité variable de données sur ma feuille "Cat1" :

- 403 colonnes
- X lignes (variable)

Donc le graphique présente X courbes de 403 points :)

Les deux premières colonnes sont "Nom" et "prénom" et sont donc les étiquettes des courbes
La première ligne contient les abscisses, les lignes suivantes les valeurs à tracer

J'ai définis un nom de plage "Plage1" comme suit:

VB:
=DECALER('Cat1'!$A$1;0;0;NBVAL('Cat1'!$A:$A);403)

Mais quand je définis la courbe avec cette plage, ça ne fonctionne pas...

Ci joint un morceau de mon document (les courbes sont ici constantes, c'est normal)
 

Pièces jointes

  • Classeur1.xls
    35.5 KB · Affichages: 85
  • Classeur1.xls
    35.5 KB · Affichages: 83
  • Classeur1.xls
    35.5 KB · Affichages: 74

chris

XLDnaute Barbatruc
Re : Graphique avec plage variable

Bonjour

Bien que je doute que 403 points et autant de courbes donnent un graph exploitable, ci-joint une solution avec la source sous forme de tableau ce qui permettra l'évolution naturelle du graph...
 

Pièces jointes

  • 403.xlsx
    15.4 KB · Affichages: 104

Wishguu

XLDnaute Nouveau
Re : Graphique avec plage variable

Bonjour,

Merci pour cette réponse, mais je pense que le problème est juste repoussé.
Certes le graphique prend en compte le fait que la taille du tableau peut augmenter,
mais le tableau est définit de façon manuelle sur une plage fixe.

Pour mieux comprendre : les données sont chargées sur "Cat1" à l'ouverture de mon fichier Excel,
il faudrait donc que le tableau englobe les données automatiquement sans définir de range fixe en sélectionnant les données.

Je ne sais pas si c'est très clair...
 

chris

XLDnaute Barbatruc
Re : Graphique avec plage variable

Bonjour

As-tu au moins essayé d'ajouter une ligne ou 10 ?

Si tu l'avais fait, tu aurais pu constater que le graphique suit.

Les plages que montrent les graphiques, quand on regarde la source, ne mettent jamais en évidence l'aspect dymanique.

Si le chargement de tes données respecte la définition du tableau, cela marche sans problème. A toi donc de charger correctement !
 

Wishguu

XLDnaute Nouveau
Re : Graphique avec plage variable

Après test, le tableau ne suit pas, j'importe les données de façon trop brute.
Je pensais donc à la fin de mon importation convertir automatiquement en tableau,

Pourriez-vous m'aider à formuler ça ?

En partant des données, faire en sorte que le code définisse les dimensions et convertisse la plage obtenue en tableau ?
 

Wishguu

XLDnaute Nouveau
Re : Graphique avec plage variable

L'import se fait depuis un classeur source sur la feuille "Données" du classeur "Test12" de cette façon :

' Ouverture fichier de données
Workbooks.Open Filename:="G:\Mes documents\Projet Excel\Copie de Tableur calcul part var 2013 2014 ED en cours YBU 05 02 14.xls"

' Sélection données à copier
Sheets("Disposotif en cours").Select
Range("B:B,J:J,W:W,AB:AB").Select

' Mise en mémoire de la sélection
Selection.Copy

' Ouverture du fichier de destination et de la feuille
Windows("Test12.xlsm").Activate
Sheets("Données").Select
Range("A:A").Select

' Collage
Selection.PasteSpecial Paste:=xlPasteValues

Ensuite je fais tout un traitement des valeurs et une réorganisation qui à priori n'est pas importante.

Je pensais pour déclarer un tableau quelque chose de ce genre à la fin de ma routine d'importation des données sur "Cat1" :


derniere_ligne = Range("A1").End(xlDown).Row 'Dernière ligne de la base de données

Dim Tab1()
ReDim Tab1(derniere_ligne, 403)

Je n'ai pas de message d'erreur mais je n'ai pas de tableau non plus en résultat !
 

chris

XLDnaute Barbatruc
Re : Graphique avec plage variable

Re


  • Soit tu crées ton tableau après (et ce n'est pas ce que fait ton code) mais il faut refaire le graphique
  • soit tu crées une structure de tableau avec juste les titres et une ligne vide et le graphique attaché,
    puis par VBA tu remplis le tableau à partir de la ligne 2.
    Code:
        Range("NomTableau[Nom]").Select
        Selection.PasteSpecial Paste:=xlPasteValues
    a adapter ensuite pour coller en bas du tableau sauf si tu vide au préalable
 

Wishguu

XLDnaute Nouveau
Re : Graphique avec plage variable

Re,

Le plus efficace est peut être de créer la structure de tableau et de remplir.

Admettons que j'ai un tableau avec mes entêtes (1ère ligne) que j'ai créé à la main.
Il faudrait donc que je le vide avant de coller, puis que je colle mes données avec ton code si j'ai bien compris.
Comment vide-t-on un tableau ?
 

Wishguu

XLDnaute Nouveau
Re : Graphique avec plage variable

Me revoilà avec un question plus précise :

Je copie colle dans le "Tableau4" à l'aide de cette routine :


Sub Tri4()

j = 1
With Sheets("Trace")

For i = 2 To .Range("A65536").End(xlUp).Row

If UCase(.Cells(i, 1)) = "1" Then
.Cells(i, 2).EntireRow.Copy Destination:=Range("Tableau4").Cells(j, 1)
j = j + 1
End If
Next i
End With

End Sub

Le souci est que au lieu de copier toute la ligne je voudrais copier seulement à partir de la cellule active jusqu'à la dernière valeur, sinon mon tableau se déforme complètement.

Ce serait quelque chose de ce style, mais ma formulation est mauvaise car elle ne prend pas la plage depuis la cellule active jusqu'à la dernière cellule remplie :

.Cells(i, 2).End(xlToRight).Copy Destination:=Range("Tableau4").Cells(j, 1)
 

chris

XLDnaute Barbatruc
Re : Graphique avec plage variable

Re

Si tu regardes mon code : on prend toute la page source, on donne le nom de la 1ère colonne du tableau et il n'y a pas de boucle.

Edit
Pour vider : supprimer toutes les lignes sauf les titres et la ligne en dessous et effacer le contenu de cette dernière
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Graphique avec plage variable

RE
Quand je parle de plage source je parle de la source du copier coller, donc des lignes à coller.
Un filtre préalable sur la source serait sans doute plus efficace qu'une boucle s'il y a beaucoup de lignes...
 

Wishguu

XLDnaute Nouveau
Re : Graphique avec plage variable

Je pense que c'est la plage source que je n'arrive pas à nommer.

Le filtre me sélectionne une cellule, je voudrais copier la ligne correspondante SAUF la première case.

jusqu'à maintenant je n'arrive qu'à sélectionner la ligne entière
 

Discussions similaires

Réponses
6
Affichages
490

Statistiques des forums

Discussions
312 488
Messages
2 088 835
Membres
103 972
dernier inscrit
steeter