Workwheet change, revenir à la cellule active [Résolu]

cs_kouki69 95 Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention - 27 août 2015 à 11:15 - Dernière réponse : ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention
- 28 août 2015 à 18:24
VBA Office (Excel, Word ...) Posez votre question Signaler Répondre au sujet
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")

Afficher la suite 
95Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention

14 réponses

Répondre au sujet
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 27 août 2015 à 11:23
0
Utile
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.

Commenter la réponse de ucfoutu
cs_kouki69 95 Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention - 27 août 2015 à 14:08
0
Utile
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
Commenter la réponse de cs_kouki69
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par ucfoutu le 27/08/2015 à 18:28
0
Utile
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.
Commenter la réponse de ucfoutu
cs_kouki69 95 Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention - 28 août 2015 à 08:31
0
Utile
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
Commenter la réponse de cs_kouki69
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par ucfoutu le 28/08/2015 à 09:16
0
Utile
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.
Commenter la réponse de ucfoutu
cs_kouki69 95 Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention - 28 août 2015 à 09:50
0
Utile
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 !!!
Commenter la réponse de cs_kouki69
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 28 août 2015 à 10:15
0
Utile
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 ?
Commenter la réponse de ucfoutu
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 28 août 2015 à 10:57
0
Utile
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 ...
Commenter la réponse de ucfoutu
cs_kouki69 95 Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention - 28 août 2015 à 11:18
0
Utile
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
Commenter la réponse de cs_kouki69
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par ucfoutu le 28/08/2015 à 11:30
0
Utile
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.
Commenter la réponse de ucfoutu
cs_kouki69 95 Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention - 28 août 2015 à 11:47
0
Utile
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 ?
Commenter la réponse de cs_kouki69
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par ucfoutu le 28/08/2015 à 12:57
0
Utile
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.
Commenter la réponse de ucfoutu
cs_kouki69 95 Messages postés lundi 27 mars 2006Date d'inscription 28 août 2015 Dernière intervention - 28 août 2015 à 14:27
0
Utile
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
Commenter la réponse de cs_kouki69
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par ucfoutu le 28/08/2015 à 18:27
0
Utile
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.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.