Aller chercher des indices dans une case

Résolu
gerard -  
 gerard -
Bonjour,

Sous Excel, je souhaiterai aller chercher une référence dans une case pour l'intégrer dans la formule que définit la zone de données d'un graphique.
Le cas concret est:

Données sources du graphique, dans la feuille "Evolution':

='Evolution'!$B$1:$W$3

J'amerais automatiser cette formule pour qu'en mettant par exemple le chiffre 4 dans la case A1 de la feuille 'Evolution', la formule

='Evolution'!$B$1:$W$fonction(va chercher la valeur en 'Evolution'!A1)

soit comprise dans le champ du graphique comme étant

='Evolution'!$B$1:$W$4

Merci d'avance !
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. gerard
     
    Je ne sais pas si ma question a été très claire. En gros, dans l'exemple précédent, j'aimerais simplement que le nombre 3 à la fin de la formule

    ='Evolution'!$B$1:$W$3

    puisse être allé cherché dans une case, et être ainsi modifiable automatiquement.

    Merci
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Bonsoir,
      Tu colle la macro ci-dessous dans un module (VBA).. Alt+F11
      Function MyMacroPlage()
      Dim FL1 As Worksheet
      Dim Ad As String
      
      Application.Volatile
          Set FL1 = Worksheets("Feuil1")
          If FL1.Range("A1").value < 1 then exit Function
          Ad = "='Evolution'!$B$1:$W$" & FL1.Range("A1")
          ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Activate
          ActiveChart.SetSourceData Source:=Range(Ad)
          FL1.Range("A1").Select
      End Function

      Changer Feuil1 par le nom de la feuille où est le graph.
      Set FL1 = Worksheets("Feuil1")
      Retour dans Excell..
      Dans la cellule A2 tu met
      =MyMacroPlage()
      ensuite tu tape le nombre que tu veux dans A1
      Si pas de modif tu tape F9

      A+
      0
  2. gerard
     
    Merci beaucoup pour la réponse !

    Petite question subsidiaire: si la case qui contient l'info n'est pas dans Feuil1, quelle manip doit être faite ? J'ai essayé quelque chose, mais il n'a pas l'air d'apprécier...
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Pas de problème, tu change la ligne..
         Ad = "='Evolution'!$B$1:$W$" & FL1.Range("A1")

      par..
         Ad = "='Evolution'!$B$1:$W$" & Sheets("LeNomDeLaFeuille").Range("A1")

      Mais regarde la macro j'ai fait un changement entretemps.
      EDIT:
      Mais alors pour éviter les erreurs il faut aussi changer cette ligne de la même facon..
          If FL1.Range("A1").value < 1 then exit Function

      par
          If Sheets("LeNomDeLaFeuille").Range("A1").value < 1 then exit Function
      0
  3. gerard
     
    Apparemment le fait que Feuil1 ne soit pas une véritable feuille mais un graphique (Graph1), la ligne

    Set FL1 = Worksheets("Graph1")

    ne veut pas compiler et renvoie l'erreur "L'indice n'appartient pas à la sélection"
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Wouahhh, ca t'a pas dit que c'était une feuille graph..
    Je refais la macro et.. Minute
    Ou Plutôt dit-moi..
    Le nom de la feuille Graph
    Le nom de la feuille où sont les données du graph
    Le nom de la feuille où tu prend A1
    Comme ca je pourais la faire directement fonctionnelle.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bon, je vais au dodo, alors voila la macro, adapte le nom des feuilles..
    Sub MyMacroPlage()
    Dim Ad As String
    Dim Lig As Integer
    
        Application.Volatile
        Lig = Sheets("Feuil1").Range("A1")
        Ad = "='Evolution'!$B$1:$W$" & Lig
        Sheets("Graph1").SetSourceData Source:=Range(Ad)
    End Sub

    NB: Impossible d'activer la feuille graph dans cette macro, faut donc clic sur l'onglet pour la voire.
    A+
    0