Problème appel macro la première fois

malouve Messages postés 56 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 20 juillet 2010 - 25 sept. 2009 à 11:01
malouve Messages postés 56 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 20 juillet 2010 - 25 sept. 2009 à 13:37
Bonjour,

J'ai réalisé des graphes automatiques en faisant une macro sous excel avec une fonction de ZOOM sur une partie du gaphe , je voulais par la suite faire une somme des valeurs des cellules utilisées pour le zoom et l'afficher sur mon graphe .
A chaque fois que je clique sur mon bouton ZOOM, je renseigne mon 1er point et le nombre de points que je veux afficher mais la première fois , ma somme = 0 et qd je refais la manip la somme prend la bonne valeur.
J'ai fait un debeug pas à pas et je vois que les cellules indexées n'ont pas de valeur ( la première fois que je clique sur le bouton ZOOM) et pourtant , elles ont bien des valeurs , je ne comprends pas du tout , ce qui se passe

voici le code appelé dans un commandbutton_click

Sub AddChartObject_zoom(n As Long, m As Long)
Dim SC As Series
Dim cost As Single
cost = 0
Dim j As Long


 For j = n To n + m
  ' c'est ici le problème la première fois que je clique sur mon bouton Cells(j, "A").Value est vide , c'est pas le cas en réalité 
  cost = cost + Cells(j, "A").Value
 
   Next j

On Error GoTo err_valid
Sheets("DATA").Select
 With ActiveSheet
    
    .Shapes.AddChart.Select
      
      
       With ActiveChart
       .ChartType = xlColumnClustered
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Name = "From " & n & " to " & m + n & Chr(10) & " (cost " & cost & ")"
        .SeriesCollection(1).Values = "=" & "DATA" & "!$A$" & n & ":$A$" & m + n & ""
        
            End With
  
  
        
   For Each SC In ActiveChart.SeriesCollection
        If SC.Name <> ActiveChart.SeriesCollection(1).Name Then
            SC.Delete
        End If
    Next SC

End With
Exit Sub
err_valid:
MsgBox Err.Description


Je vous remercie si vous avez une idée ou une réponse à ce que j'appelerai un beug.

Un exp: voilà ce que contient la colonne A
0,042209
0,042272
0,042096
0,039478
0,008379

pour les 5 valeurs appelées (n=1 pour cellule(1,1) 1 et m= 5 pour le nombre de points )
j'ai cost = 0; la première fois
et cost = somme (cells) pour le second appel de la fonction

J'espère que je suis claire .
Merci

4 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
25 sept. 2009 à 11:22
salut,

remplace : cost = cost + Cells(j, "A").Value

par :

cost = cost + Range("A" & j).Value

ou

cost = cost + Cells(j, 1).Value

le "beug" qui s'écrit bug est en général assis devant son ordinateur

A+
0
malouve Messages postés 56 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 20 juillet 2010
25 sept. 2009 à 11:47
Salut,

Merci pour les idées que j'avais déjà essayé mais qui n'ont pas résolu mon problème.

désolée pour l'écriture de Bug si çà te choque tant que çà , lol
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
25 sept. 2009 à 12:47
bonjour

Loin d'être un expert, je suggère de remonter les 2 lignes

Sheets("DATA").Select
With ACtiveSheet

et Ensuite d'utiliser
ActiveSheet.Range.Cells(...
0
malouve Messages postés 56 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 20 juillet 2010
25 sept. 2009 à 13:37
slt loulou69

c'était effectivement çà le problème , je l'ai fait avant de lire ton message et venait dire que mon problème est résolu; je te remercie de ton idée mais j'aurai une question à poser concernant l'axe des abscisses.
Avez vous une idée de comment changer l'axe des abscisses en fonction du Range sélectionné?
je m'explique , je crée des courbes dans une boucles for tous les 12000 points :
1 à 120000
120001 à 24000
24001 à 360000
... jusqu'à la fin de mon fichier
à l'affichage de mes courbes, j'ai toujours l'axe des abscisses qui va de 1 à 12000, je voudrais forcer l'axe à prendre les valeurs du range afin de savoir ou je me trouve.


Merci encore de vos idées
0
Rejoignez-nous