Sélectionner plage données variable graphique [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
mercredi 6 juin 2018
Statut
Membre
Dernière intervention
6 juin 2018
-
Messages postés
2
Date d'inscription
mercredi 6 juin 2018
Statut
Membre
Dernière intervention
6 juin 2018
-
Bonjour à tous,

Etant novice en programmation je requiers votre aide pour me permettre à ma macro de fonctionner complètement.

Pour expliquer mon problème en langage courant, je souhaite :

- Sélectionner le graphique dans le feuille "Choix"
- Déterminer la plage de données du graphique type radar
- La plage de données se trouve sur la feuille "Matrice_Graph"
- Sélectionner dans la feuille "Matrice_Graph" la plage de B1 à la dernière cellule non vide de la colonne D
- Fin de macro

Voilà ce que m'affiche VisualBasic :

Sheets("Choix").Select
ActiveSheet.ChartObjects("Graphique 3").Activate
Application.CutCopyMode = False
ActiveChart.SetSourceData Source:=Sheets("Matrice_Graph").Range("B1:D18")

Je ne souhaite pas que dans .Range("B1:D18"), D18 soit sélectionner mais Dernière cellule non vide de la colonne D (comme lorsqu'on fait Ctrl+Flèche de droite puis Crtl+Flèche du bas) car ma plage de données sera variable et ne sera pas toujours égale à 18 lignes.

Je vous remercie d'avance

2 réponses

Messages postés
15260
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
5 août 2020
1 319
Bonjour,
derniere cellule non vide colonne D
derlig = Range("D" & Rows.Count).End(xlUp).Row
ActiveChart.SetSourceData Source:=Sheets("Matrice_Graph").Range("B1:D" & derlig) 
Messages postés
2
Date d'inscription
mercredi 6 juin 2018
Statut
Membre
Dernière intervention
6 juin 2018

Bonjour,

Si je comprends bien tu définis une plage de cellules variable que tu nommes derlig et ensuite tu l'inclus dans la commande SetSourceData c'est cela ?

Après avoir entrer ta commande dans VisualBasic, le graphique ne sélectionne que la première ligne (soit la ligne 1). En changeant xlUp par XlDown la commande fonctionne parfaitement !!

Merci à toi et bonne journée !
Messages postés
9523
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 juillet 2020
1 875
Bonjour

Pourquoi ne pas nommer dans la feuille tes plages de données de façon dynamique avec DECALER

Sinon avec vba

Dim gr As Object, lifin As Long
lifin = Sheets("Matrice Graph").Range("D" & Rows.Count).End(xlUp).Row
With ActiveSheet
Set gr = .ChartObjects(1).Chart
gr.SetSourceData Source:=Sheets("Matrice Graph").Range("B1:D" & lifin)
End With


Cdlmnt