Sélectionner plage données variable graphique

Résolu
Sadokaze78 Messages postés 2 Statut Membre -  
Sadokaze78 Messages postés 2 Statut Membre -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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) 
    0
    1. Sadokaze78 Messages postés 2 Statut Membre
       
      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 !
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0