Aller chercher des indices dans une case

Résolu/Fermé
gerard - 7 juin 2008 à 21:52
 gerard - 8 juin 2008 à 11:46
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

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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 juin 2008 à 01:04
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
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 juin 2008 à 01:56
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
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 juin 2008 à 02:30
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 juin 2008 à 03:09
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
Ca marche très bien, merci ;)
0