Erreur code vba macro excel

Résolu/Fermé
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011 - 7 mars 2011 à 08:56
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011 - 7 mars 2011 à 13:36
Bonjour,

J'aimerai faire un graphique d'une base de données de taille variable. Mon code est le suivant :

Range(FL3.Cells(1, 4), FL3.Cells(DerniereLigne2, 7)).Select
FL3.Shapes.AddChart.Select
FL3.SetSourceData Source:=Range(FL3.Cells(1, 4), FL3.Cells(DerniereLigne2, 7))
FL3.ChartType = xlLineMarkers
FL3.Axes(xlValue).MaximumScale = 1

DerniereLigne2 est une variable à laquelle je donne la valeur de la dernière ligne de ma base de donnée
La première ligne ( Range(FL3.Cells(1, 4), FL3.Cells(DerniereLigne2, 7)).Select ) ne passe pas... je ne sais pas pourquoi, mon Range semble pas si mal pourant... Une idée ?

Merci d'avance !!

SI vous avez un autre code, ca ne me dérange pas, il semblerait qu'il vaille mieux éviter d'utiliser les .Select, mais je ne sais pas faire autrement...
A voir également:

5 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
7 mars 2011 à 10:11
bonjour

je suppose que FL3 est le nom de la feuille
un code du genre

Dim gr As ChartObject
' creation de gr calé sur A8 de taille 300x200
Set gr = Sheets("FL3").ChartObjects.Add(Range("A8").Left, Range("A8").Top, 300, 200)
With gr.Chart
  .ChartType = xlLineMarkers
  .SetSourceData Source:=Sheets("FL3").Range(Cells(1, 4), Cells(DerniereLigne2, 7))
  ' etc ...
End With


RQ. pour faire un graphique dont la plage de données est variable, on n'a pas forcément besoin de VBA

bonne suite
0
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011
7 mars 2011 à 11:12
Hello !

Merci pour ton aide ! La ligne

.SetSourceData Source:=Sheets("Feuil3").Range(Cells(1, 4), Cells(DerniereLigne2, 7))

ne marche toujours pas, est ce qu'on peut utiliser un range avec une variable à l'intérieur ?

FL3 est défini de la manière suivante : Set FL3 = Worksheets("Feuil3")
Mais j'ai changé ton code (remplacement de FL3 par Feuil3.

pour ton RQ : je fais un extract de données, et en lançant ma macro, je calcul un tas de trucs, et j'aimerai afficher ces résultats sous forme de graphique automatiquement, vu que la manip se fait souvent. C'est pour cela que j'aimerai l'intégrer à ma macro. Tu aurais une autre méthode en tête ?
0
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011
7 mars 2011 à 11:43
d'après les recherches que j'ai fait, Source n'aime pas trop le Range(cells(), cells())

Mais je n'en suis pas sur. Et je sais pas comment faire autrement...
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/03/2011 à 13:09
Bonjour,
ne marche toujours pas, est ce qu'on peut utiliser un range avec une variable à l'intérieur ?
Aucun problème, vérifie que la variable est bien initialisée, sinon elle est à zéro et là ça plante.
Quel est le N° et libellé de l'erreur.
A+
Pour info...
Range(Cells(1, 4), Cells(DerniereLigne2, 7)

peut être remplacer par,
Range("D1:G" & DerniereLigne2)

Edit 2:
Je doit dire qu'Excel est un peu pointilleux sur ce sujet.
Pour que ça fonctionne faut activer la feuille
et connaitre le nom du graph.
    With Sheets("Feuil3")   
       .ChartObjects("Graphique 1").Activate   
        ActiveChart.SetSourceData Source:=.Range("D1:G" & DerniereLigne2), PlotBy:=xlColumns   
    End With

Et préciser que tu travail en colonne.

Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011
7 mars 2011 à 13:36
Hello,

merci ! Ca fonctionne ! J'ai simplement remplacé le

Range(Cells(1, 4), Cells(DerniereLigne2, 7)

par

Range("D1:G" & DerniereLigne2)

et je n'ai rien fait de plus... Ca a fonctionné... peut être étrange, jsp... En tout cas merci !
0