Workwheet change, revenir à la cellule active

Résolu
cs_kouki69 Messages postés 95 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 août 2015 - 27 août 2015 à 11:15
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 28 août 2015 à 18:24
Bonjour,

C'est surement très simple mais je ne trouve pas de solution rapide, manque clairement de connaissances sur VBA. Merci à vous de vous interesser à mon petit problème.

J'ai besoin de mettre à jour un graphique à chaque fois que je modifie une cellule. Par exemple, je tape une valeur dans la cellule "A10" et je veux que mon graphique tienne compte de cette modification pour changer éventuellement d'échelle. Le soucis, c'est qu'une fois que j'ai tapé la valeur dans la cellule "A10"et validé avec "ENTERr", je ne suis plus sur la cellule et mon graphique reste selectionné. Ce que je souhaiterai, c'est dès que j'appuie sur "ENTER, je passe à la cellule du dessous (A11) et que mon graphique se remette à jour.
Merci pour votre aide.
Bien cordialement et bonne journée à vous !!!


Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.ChartObjects("Graphique 2").Activate
' ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MaximumScale = Range("X54")

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 août 2015 à 11:23
Bonjour,
Cela ne t'arriverait certes pas si tu cessais de travailler à coups de Activate, Select, etc ....
Sous VBA/Excel, on travaille directement sur les objets Excel en les invoquant d'où l'on est ... sans s'y rendre !
Exemple d'objet :
Workshettes("Feuil2").ChartObjects("Graphique 2")
n'est rien d'autre que l'objet Excel concerné par ta 1ère ligne de code.

0
cs_kouki69 Messages postés 95 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 août 2015
27 août 2015 à 14:08
Ucfoutu,

La raison pour laquelle je travaille à coups de Activate, Select... est que je ne sais pas faire autrement et il faut donc que j'apprenne.
Déja, est-ce que écrire le petit code dans une "fenêtre" : Private Sub Worksheet_Change(ByVal Target As Range) est la bonne approche ?

Pourquoi mettre Worksheet("feuil2").Chart...., alors que je suis déja dans cette feuille ?

Autrement, je ne connais pas les commandes associées aux graphiques, comment savoir quoi mettre derrière Worksheet("Feuil2").ChartObjects("Graphique 2") -- ??

Si je ne met rien derrière, il me souligne la ligne en jaune....

Merci
Kouki
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 27/08/2015 à 18:28
et il faut donc que j'apprenne

c'est une évidence, comme pour tout (quel que soit le domaine).
Cela signifie avant tout : lecture de l'aide VBA (je ne me suis personnellement que servi de cette aide).
On apprend ainsi, pas à pas ... sans jamais mettre la charrue avant les boeufs ...
Constate où tu en es (depuis maintenant 9 ans), avec une "approche" différente ... ===>>> encore au début !
Déja, est-ce que écrire le petit code dans une "fenêtre" : Private Sub Worksheet_Change(ByVal Target As Range) est la bonne approche

ben .. oui... dès lors que tu dis :
besoin de mettre à jour un graphique à chaque fois que je modifie une cellule

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_kouki69 Messages postés 95 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 août 2015
28 août 2015 à 08:31
Bonjour !
Il ne faut pas croire que j'écris des codes depuis 9 ans autrement, ce serais peut-être moi qui réponderais à tes messages aujourd'hui....;-)...je me suis inscris il y a 9 ans, certes, depuis de l'eau à coulé sous les ponts, dailleurs je m'aperçois que ce site est beaucoup moins fréquenté...à "l'époque", les forumistes étaient beaucoup plus serviables, n'est-ce pas le but de ces forums, aider son prochain ????? Comme dans toute formation, il faut un professeur, les livres ne suffisent pas.....
Bonne journée
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/08/2015 à 09:16
Je c rois que tu n'as pas compris : ce site n'est pas un site d'enseignement, mais un forum d'aide aux développeurs. Un développeur est censé connaître au moins les bases de son outil de développement. Ce n'est manifestement pas ton cas.
Tu seras le bienvenu lorsque tu auras commencé l'apprentissage nécessaire.
L'aide VBA est là (c'est au passage la seule aide que je me suis accordée et elle s'est avérée suffisante).
Existent également des cours, des livres, etc ... (ils ne sont à mon sens pas vraiment nécessaires, l'aide VBA me paraissant suffisante).
Reviens lorsque tu auras fait l'effort de passer ce stade liminaire, avec une difficulté à résoudre qui ne relève pas de la simple connaissance des rudiments.
Bonne étude.

EDIT : je ne doute pas que peuvent exister d'autres forums qui te serviront du code tout cuit, prêt à copier/coller. Cette approche, qui conduit à pérenniser l'incapacité à développer réellement un jour, n'est pas celle de ce forum.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_kouki69 Messages postés 95 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 août 2015
28 août 2015 à 09:50
Pardon si ce site est réservé aux "Développeurs", moi je suis un simple novice qui utilise Excel et VBA pour m'apporter de l'efficacité dans mon boulot. La programmation n'est pas mon métier et je n'ai pas de budget d'heure pour la formation en VBA...et pourtant j'arrive à faire pas mal de choses en VBA même si aux yeux de certain je ne connais pas les bases....vous seriez étonné ......
Je vais donc me passer de l'aide réservé aux Développeurs !!!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 août 2015 à 10:15
Une autre fois :
utilise les objets Excel
Je t'ai dit plus haut que :
Worksheet("Feuil2").ChartObjects("Graphique 2")
est un objet (un objet de la collection ChartObjects)
Cet objet accepte des méthodes. Axes est à la fois une méthode (une méthode d'un objet Chart) et une collection (la collection Axes).
Cela te coûte vraiment d'ouvrir ton aide VBA sur le mot Axes ? Tu y trouveras la rubrique Chart.Axes, méthode. Ouvre la donc ===>> tu y trouveras ce que tu cherches, non ?
MaximumScale est une propriété ===>> ouvre ton aide VBA sur ce mot et lis !
Le reste est vraiment beaucoup trop évident !
Alors ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 août 2015 à 10:57
Et même si tu tiens à rester à du "bricolage" à coups de selections, etc ...(vraiment à éviter pour mille et une raisons, dont de lourdeur et lenteur) : tu peux toujours revenir à la cellule de départ ! elle n'est rien d'autre que le paramètre target de l'évènement Change ...
0
cs_kouki69 Messages postés 95 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 août 2015
28 août 2015 à 11:18
J'ai activé l'aide VBA (l'aide était dirigée vers offices.com....)
Je suis en train de lire les articles selon tes conseils...
Il semble que la première ligne bug déja...., il me surligne en bleu Worksheet (que j'ai souligné ci-dessous) LE message est le suivant: Erreur de compilation: Sub ou function non définie....je creuse....

Private Sub Worksheet_Change(ByVal Target As Range)

Worksheet("Cmpbll gear").ChartObjects("Graphique 2").Chart

With Charts("Graphique 2").Axes(xlValue)
.MaximumScale = Range("X54")

End With
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/08/2015 à 11:30
Ben ...pardi ...
Ce n'est pas "WorkSheet", mais
WorkSheets 
!!!
WorkSheets est une collection (la collection des feuilles de ton classeur)
Un item d'une collection totos se définit soit par son nom ( ex : totos("nom"), soit par son index (ex :totos(2))
Tu te rends au moins compte de ce que nous sommes maintenant à parler ici des rudiments de chez rudiment ?
Et le reste de ton "code" ne correspond pas à ce que l'on peut lire dans l'aide VBA (et que je t'ai invité à lire).
J'abdique
Bonne chance.


________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_kouki69 Messages postés 95 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 août 2015
28 août 2015 à 11:47
C'est bien de parler de rudiment de chez rudiment, celà permet de reconstruire des bonnes fondations...
J'avais bien mis le s à Worksheet, ça ne marchait pas, j'ai du l'enlever pour essayer....
Je présume que la ligne :

Worksheets("Cmpbll gear").ChartObjects("Graphique 2").Chart--

permet de déclarer que la suite des commandes seront à appliquer sur le graphique 2 ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/08/2015 à 12:57
Cette ligne ne peut que provoquer une erreur ...
Chart est un objet et n'est ni une fonction, ni une méthode.
Aide VBA à relire, donc ...

EDIT : est-il si difficile de comprendre ceci :
Dans cet exemple totalement inventé, je définis des propriétés d'un objet titi de l'objet toto
with toto.titi
.propriétéA = ...
.propriétéX = ....
end with

?

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_kouki69 Messages postés 95 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 août 2015
28 août 2015 à 14:27
Et le petit code est:


With Worksheets("Cmpbll gear").ChartObjects("Graphique 2").Chart.Axes(xlValue)
.MaximumScale = Range("X54")

End With



J'avoue que je ne comprends pas trop la structure, mais ça marche.
Lorsque j'aurais un peu plus de temps, je me pencherais sur les rudiments...peut-être à bientôt pour un nouveau sujet....
Merci pour votre patientence
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/08/2015 à 18:27
j 'avoue que je ne comprends pas trop la structure

Là encore, il te suffirait de lire ce qu'en dit ton aide VBA (rubrique With, instruction ) .
Ce n'est pas une "structure" ! Une structure est tout autre chose et se déclare et se définit de toute autre manière (aide VBA à ouvrir à la rubrique Type, instruction)

Cette instruction With (bloc d'instructions concernant un OBJET) est exposée dans l'aide VBA de manière très claire, assortie d'exemples non moins clairs. A ce point claire, que je vois mal comment l'exposer de manière plus efficace et simple ...


________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Rejoignez-nous