Creer graphique avec VBA SANS PASSER par excel

  • Initiateur de la discussion Initiateur de la discussion mr_kiri
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mr_kiri

XLDnaute Nouveau
Bonjour,

Je voudrais savoir s'il est possible de creer un graphique directement avec des valeurs calculées par une macro et stockées dans une variable à une dimension de la macro.
Genre
Dim x(1000), y(1000)

for i=1 to 1000
x(i)= *** calcul ***
y(i)= *** calcul ***
next

Graph(x;j; i de 1 à 1000)


En fait, je ne veux pas passer les valeurs x et y dans une feuille excel car il a mille valeurs et le fait de les afficher dans les cases me prend ENORMEMENT de temps (genre 10s) alors qu'il faut moins d'une sec à ma macro pour les calculer...

Merci de vos réponses.
Greg
 
Re : Creer graphique avec VBA SANS PASSER par excel

Bonjour Mr Kiri,

Pour info, j'ai fait une macro qui se connecte à une base et écrit les données de plus de 5000 cellules en environ 4 secondes...
Donc écrire 2000 valeurs ne devrait pas prendre beaucoup plus de 2 secondes... Même si tout celà peut être différent d'un poste à l'autre.

Ceci dit, je crois que ce que tu demandes est possible, puisqu'un graphique peut être basé sur des valeurs numériques fixes entrées directement dans la zone "Série", mais en acceptera-t-il 1000 ?
Je fais un test et je te reviens
 
Re : Creer graphique avec VBA SANS PASSER par excel

Bonjour


edition: Voilà un exemple pour illustrer le propos tototiti2008

Code:
Sub MakeChart()
'source: Allen Wyatt
    'Add a new chart
    Charts.Add

    'Set the dummy data range for the chart
    ActiveChart.SetSourceData Sheets("Feuil1").Range("a1:d4"), PlotBy:=xlColumns

    'Manually set the values for the data series
    ActiveChart.SeriesCollection(1).Formula = _
      "=SERIES(""First Data"",{""a"",""b"",""c"",""d""},{2,3,4,5},1)"
    ActiveChart.SeriesCollection(2).Formula = _
      "=SERIES(""Second Data"",{""a"",""b"",""c"",""d""},{6,7,8,9},2)"
    ActiveChart.SeriesCollection(3).Formula = _
      "=SERIES(""Third Data"",{""a"",""b"",""c"",""d""},{10,11,12,13},3)"
End Sub
Les valeurs ne sont pas stockées dans une feuille 😉

PS: désolé tototiti2008, j'avais lu : n'est pas possible
 
Dernière édition:
Re : Creer graphique avec VBA SANS PASSER par excel

Bonjour Staple,
Comme je le disais,
Ceci dit, je crois que ce que tu demandes est possible, puisqu'un graphique peut être basé sur des valeurs numériques fixes entrées directement dans la zone "Série", mais en acceptera-t-il 1000 ?

Et en effet, je viens de faire des tests mais personnellement j'ai été incapable d'ajouter plus d'environ 80 valeurs fixes à une série.... on est loin des 1000.
 
Re : Creer graphique avec VBA SANS PASSER par excel

hello

essai avec en A1 le nombre 1 et A2 le 2
en B1 =LOG(A1+3)
en C1 =SIN(A1*5)

tu sélectionnes, tu tires vers le bas, en 3 secondes c'est OK
tu crées le nuage de points B / C

je l'enregistre en macro (j'ai tiré jusqu'à 1526 lignes)
je mets C1= LOG (A1*2) et C2=LOG(A2*2)
exécution macro : instantané.

**************************************************************
 
Re : Creer graphique avec VBA SANS PASSER par excel

Bonjour à tous,

les valeurs x et y dans une feuille excel car il a mille valeurs et le fait de les afficher dans les cases me prend ENORMEMENT de temps (genre 10s) alors qu'il faut moins d'une sec à ma macro pour les calculer...

A Mr_Kiri: Bizarre, comme question, mettre 10 secondes pour afficher 1000 valeurs, aurais tu un 8088 comme processeur avec 16 Ko Ram!

Sinon, un fichier zippé joint sur ce forum avec 1000 valeurs, cela doit faire moins de 48 Ko.
 
Re : Creer graphique avec VBA SANS PASSER par excel

bonsoir


Un exemple de graphique créé à partire de variables tableaux, par contre tu seras limité par le nombre de caractères maximum admissible dans la barre de formule (un peu plus de 1000 il me semble):

Code:
Sub creationGraphiqueParTableau()
    Dim i As Byte
    Dim Tableau(1 To 10) As Integer, Tableau2(1 To 10) As Integer
    
    'Création du tableau pour les Abscisses
    For i = 1 To 10
        Tableau(i) = i * 2
    Next i
    
    'Création d'un tableau pour les Ordonnées
    For i = 1 To 10
        'Le tableau est rempli par des valeurs aléatoires pour
        'cet exemple
        Tableau2(i) = Int((50 * Rnd) + 1)
    Next i
    
    'Création graphique
    Charts.Add
    'Définit la localisation du graphique:
    'dans la feuille de calcul Feuil1 pour cet exemple
    ActiveChart.Location _
    Where:=xlLocationAsObject, Name:="Feuil1"
    
    'Ajoute une série dans le graphique
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(1).XValues = Tableau() 'Abscisses
        .SeriesCollection(1).Values = Tableau2() 'Ordonnées
        'Définit le type (Courbe)
        .ChartType = xlLine
    End With
End Sub



bonne soirée
michel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
665
Réponses
0
Affichages
472
Réponses
9
Affichages
603
Retour