Erreur code vba macro excel [Résolu/Fermé]

Signaler
Messages postés
50
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
21 avril 2011
-
Messages postés
50
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
21 avril 2011
-
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...

5 réponses

Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 009
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
Messages postés
50
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
21 avril 2011

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 ?
Messages postés
50
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
21 avril 2011

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...
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 138
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.
Messages postés
50
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
21 avril 2011

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 !