graphique qui plante avec beaucoup de donnée

gege21

XLDnaute Occasionnel
bonjours a tous
j'ai un code qui me gêner un graphique dan suserform
il marche bien quand il y a peut de données mais plant avec beaucoup de donnée??
le ficher et trop gros je ne peut pas le mettre sauf si vous avez un lien pour mettre les gros ficher
Code:
Sub moisTemps()
'---------------------
'- graphique mensuel -
'-    Temperature    -
'---------------------
Set F1 = Worksheets(Feuil11.Name)
Application.ScreenUpdating = False
On Error Resume Next
F1.Shapes("Graphique1").Delete
Dim mois As Integer, Année As Long, Plage As Range, i As Integer
Select Case UserForm2.mois1.Value
Case "Janvier"
mois = 1
Case "Fevrier"
mois = 2
Case "Mars"
mois = 3
Case "Avril"
mois = 4
Case "Mai"
mois = 5
Case "Juin"
mois = 6
Case "Juillet"
mois = 7
Case "Aout"
mois = 8
Case "Septembre"
mois = 9
Case "Octobre"
mois = 10
Case "Novembre"
mois = 11
Case "Déscembre"
mois = 12
Case Else
Exit Sub
End Select
Année = UserForm2.année1.Value
If Année = 0 Then Exit Sub
With Sheets("Données")
i = 2
While .Cells(i, 1) <> ""
If Month(.Cells(i, 1)) = mois And Year(.Cells(i, 1)) = Année Then
If Plage Is Nothing Then
Set Plage = Union(.Cells(i, 3), .Cells(i, 4), .Cells(i, 14)) '--- choix des colonnes --
Else
Set Plage = Union(Plage, .Cells(i, 3), .Cells(i, 4), .Cells(i, 14)) '--- choix des colonnes ---
End If
End If
i = i + 1
Wend
End With
If Plage Is Nothing Then
MsgBox "Il n'y a pas de valeurs à cette date !", vbExclamation, "Erreur"
Exit Sub
End If
Charts.Add
'--- Type de graphique ---
With ActiveChart
    .ChartType = xlXYScatterLinesNoMarkers
    .SetSourceData Source:=Plage, PlotBy:=xlColumns
    .Location Where:=xlLocationAsObject, Name:=F1.Name
End With
  With ActiveChart.Axes(xlCategory)
        .MinimumScale = Plage.Cells(1, 1).Value
        .MaximumScale = Plage.Cells(Plage.Rows.Count, 1).Value
End With
[A1].Select
    fichier = ActiveWorkbook.Path & "\" & "graphef1.gif"
    Graph.Export Filename:=fichier, FilterName:="GIF"
    UserForm2.Image1.Picture = LoadPicture(fichier)
  Application.ScreenUpdating = True
End Sub
 

Misange

XLDnaute Barbatruc
Re : graphique qui plante avec beaucoup de donnée

Bonjour gégé
Avec 408 messages à ton actif tu dois bien te douter que sans classeur pour tester c'est dur de te répondre !
Le classeur que tu envoies ici n'a pas besoin d'être le vrai. Il faut l'alléger pour qu'il reproduise le pb.
Qu'appelles tu "beaucoup" de données ?
Si c'est plusieurs milliers, c'est clair que ce n'est pas ton code qui plante c'est excel tout simplement.
Avec 2007 c'est carrément un GROS problème : excel plante assez rapidement.

Essaie déjà de tracer le graphique manuellement avec toutes tes données et vois si ça plante.
 

gege21

XLDnaute Occasionnel
Re : graphique qui plante avec beaucoup de donnée

bonjours misange

j'ai réduit les données aux maxi pour fournier un ficher

quand je dit beaucoup de ligne c'est 46000 ligne avec 1500 nouvelles ligne tout les mois
c'est bien le code qui plante
-graphique fait en manu de 3000 ligne (lent mais sa marche. dans mon cas graph mois années environ 1500Ligne)
-j'ai un autre code qui fait un graph par plage de date sa marche bien
donc pour moi c bien le code qui plant

ce code marche mais si tu rajoute des données sa fini par ne plus marche ??
 

Pièces jointes

  • 621 ok.xlsm
    708 KB · Affichages: 81
  • 621 ok.xlsm
    708 KB · Affichages: 77
  • 621 ok.xlsm
    708 KB · Affichages: 58

Gardien de phare

XLDnaute Accro
Re : graphique qui plante avec beaucoup de donnée

Bonjour,

Pas tout compris. Tu dis qu'avec beaucoup de lignes (46000) le code plante mais qu'avec 3000 il ne plante pas. D'ailleurs, effectivement le code fonctionne chez moi. Donc, ce n'est pas le code qui plante, mais la machine (ou Excel ?) qui ne dispose pas des ressources suffisantes pour traiter un tel volume de données. Est-ce qu"on peut optimiser le code, je n'en sais rien, pas assez bon en Vba pour te dire ça. Quand ton code plante, tu as un message d'erreur ou simplement la machine se fige ?
Perso, je tenterais
  • de créer un classeurs source du graphique qui ne contienne que les données utiles ;
  • de supprimer l'étape création du gif et affichage dans le userfom ;
  • de faire tourner ça sur une machine plus puissante (perso, j'utilise le même programme de stats et graph sur un client (PC) et un serveur (serveur Unix hyper puissant) et il y a pas mal de calculs qui plantent mon PC mais ne posent aucun problème au serveur.
Enfin, je ne sais pas ce que tu veux faire, mais que lit-on sur des courbes de 46000 points ? Tes courbes sont des températures (non ?) que veut-lire sur des courbes de plusieurs années avec une mesure toutes les 30 mn, soit 18000 points par an. Est-ce que sur de longues périodes tu ne peux pas travailler avec des échantillons (1 point sur 4 par exemple) ou des indicateurs (Mini, maxi, moyenne, médiane, etc ?)

HTH

--
François L
 

Misange

XLDnaute Barbatruc
Re : graphique qui plante avec beaucoup de donnée

Bonjour
Je plussoie à toutes les remarques de François.
Je t'ai proposé de faire ton graphique manuellement pour voir si cela plantait. Ce qu'il faut faire ce n'est pas un graphique avec 3000 points mais avec tes 46000.
Comme François je ne vois pas du tout l'intérêt de mettre tous les points sur le graphique, ce sera de toutes façons illisible et ininterprétable.
je te suggère de regarder ces deux pages :
Ce lien n'existe plus
Ce lien n'existe plus
et de voir ce qui te convient.
Au lieu de faire ton graphique par macro, autant le faire dynamiquement en utilisant un tableau excel (onglet accueil/style /mettre sous forme de tableau). Tu crées ton graphique une seule fois et à chaque ajout de données dans la première ligne sous le tableau, ces données s'y insèrent et le graphique se met à jour.
Ce lien n'existe plus
le traitement d'une donnée toutes les X données est du reste traité dans ce tuto.
 

gege21

XLDnaute Occasionnel
Re : graphique qui plante avec beaucoup de donnée

re.
bonjours a vous

je pense que vous n'avez pas bien lu c que j'ai mis

46000 ligne c la bas de données
1500 ligne c le nombres de nouvelle données tous les mois
et en lancent le code ont choisi un mois et une année (donc graphique de 1500 ligne maxi)
et c la taille de la basse de donnée qui fais plante le code
donc il y a un problème sur le code mais je n c pas ou
 

Gardien de phare

XLDnaute Accro
Re : graphique qui plante avec beaucoup de donnée

Re,

Es-tu certain(e) de nous avoir lu bien, toi ? Réponds par oui ou non aux trois questions qui suivent et on va peut-être y arriver.
Tu dis le code plante, ok, concrètement
  • tu as un message d'erreur OUI NON si OUI lequel ?
  • La fenêtre VBA s'ouvre avec une ligne surlignée OUI NON si OUI laquelle ?
  • L'ordi arrête de fonctionner OUI NON

--
François L
 

gege21

XLDnaute Occasionnel
Re : graphique qui plante avec beaucoup de donnée

re.
non pas de message d'erreur
non pas de ligne surlignées
et non l'ordi ne s’arrête pas (juste excel que se ferme)
la sur le code mi il marche mais si tu agrandi le taille de la base de données sa plante
mais peut tu ouvrir le ficher (excel 2010)
 

Gardien de phare

XLDnaute Accro
Re : graphique qui plante avec beaucoup de donnée

Re,

Heureusement 2010 est autrement plus stable que 2007 que j'ai soigneusement évité !
Ceci étant dit, Xl qui se ferme comme ça sans message ni rien !!!!!!!!!

As-tu essayé d'alléger la base de données en ne gardant que les colonnes utiles ? Quel est le poids du fichier source avec toutes ses lignes ?

--
François L
 

gege21

XLDnaute Occasionnel
Re : graphique qui plante avec beaucoup de donnée

re,
c des données meteo
et je fait de multiple graph donc j'ai besoin de tout les colonnes
le problème et que quand la base de donnée et petit comme dans exemple sa marche
et de que la base et trop grand sa plante (comme si le code n’arrivais plus a retrouver se qui et demande dans l(userform)
 

Misange

XLDnaute Barbatruc
Re : graphique qui plante avec beaucoup de donnée

Au lieu de commencer par détruire ton graphique pour le reconstruire, il serait nettement plus simple de définir des noms que tu utilises comme source pour ton (tes) graphique(s). Il ne reste qu'à changer par VBA la référence de ces noms sans toucher au reste du graphique. Voire si ce sont toujours les 1500 dernières valeurs le faire en définissant les noms de façon dynamique avec decaler.

L'autre solution c'est comme je crois te l'avoir proposé via les liens que je t'ai indiqué, c'est de transformer ta bdd en tableau au sens excel du terme (onglet accueil/style/mettre sous forme de tableau) puis de simplement filtrer cette base pour ne laisser que les données utiles aux graphiques. MAis tu sembles ne regarder que ton problème et pas trop les solutions qu'on te propose.
 

gege21

XLDnaute Occasionnel
Re : graphique qui plante avec beaucoup de donnée

pour être franc
j'ai rien comprise de ce que tu voulais faire peut-tu me le montre avec le ficher joint que je vois si sa peut aller pour mon utilisation
 

Pièces jointes

  • 621 ok.xlsm
    708 KB · Affichages: 77
  • 621 ok.xlsm
    708 KB · Affichages: 65
  • 621 ok.xlsm
    708 KB · Affichages: 69

Discussions similaires

Réponses
1
Affichages
170
Réponses
0
Affichages
155

Statistiques des forums

Discussions
312 305
Messages
2 087 080
Membres
103 457
dernier inscrit
fab2614