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 !

6 réponses

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
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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
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
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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
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
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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

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

Posez votre question
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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
gerard
 
Ca marche très bien, merci ;)
0