Se connecter avec
S'enregistrer | Connectez-vous

VBA : Modifier des formes automatiques .

Dernière réponse : dans Programmation
Partagez

Bonjour le forum ,

Ca m'embetait un peu de créer un sujet pour ça mais je ne trouve pas sur Internet :??:  .

Je souhaite modifier le texte d'une de mes formes automatiques contenu dans l'un de mes graphiques .
J'ai tester ceci mais celà ne marche pas :

  1. Worksheets("Feuil1").shapes("Text Box 7").DrawingObject.text ="test"


Merci a ceux qui répondront .
Bonne journée

NoirCafé .

Salut,

1°) Démarre l'enregistreur de macro,
2°) Fais ta modif de texte,
3°) Arrête l'enregistreur de macro,
4°) Lis le code enregistré
5°) Pleure sur tant d'horreur en si peu de lignes de code
6°) Arrange tout ça. A priori, une ligne ressemblant à ton code devrait suffire. (Il doit juste manquer un objet intermédiaire ou deux)

Pour ce dernier point, je peux t'aider. (Sauf qu'à lire ton code, je pense que tu peux te débrouiller tout seul ;)  )

-----------------

Autre solution, ajoute cette magnifique fonction à ton code :
  1. Sub on_s_arrete()
  2. Stop
  3. End Sub
Et exécute-la. Quand ça s'arrête, ajoute un espion sur ta feuille. Trouves-y ta forme, ses composants, les composants des composants, etc., jusqu'à y trouver le texte à modifier. Tu auras la hiérarchie des objets à appeler.

Bonjour zeb

J'ai essayer avec l'executeur de macro bien entendu mais le résultat est plus qu'étrange :

Voilà la macro obtenue :
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro
  4. '
  5.  
  6. '
  7. ActiveSheet.ChartObjects("Chart 1").Activate
  8. ActiveChart.ChartArea.Select
  9. End Sub


Chart 1 est le nom du graphique , sur ce graphique se situe plusieurs text box avec du texte que je souhaite modifier , hors lors de la macro , je selectionne puis modifie bien le texte mais il ne semble pas faire la distinction entre les differentes textbox ( et n'afficeh tout simplement pas la manipulation ).
J'ai essayer avec plusieurs textbox , seul la selection de Chart1 s'affiche sur la macro .

Le top serait de "placer" le graphique sur des cellules ( chart1 ) , mais je ne pense pas que ce soit possible :??:  .


Assez étrange :o 

Des textbox sur un chart :??:  :??:  :??: 

Pourrais-tu me décrire très précisément tes objets ?
Ou mieux, décris-moi pas-à-pas la fabrication d'un exemple. (Pas d'envoi de fichier, merci.)
Contenus similaires

Oui , je vais aller pas a pas car il est très probable que je me mélange dans les termes employés .

Donc certaines de mes Feuilles , il y a un graphique ( englobant toute la feuille ) nommé Chart1 .
Dans ce chart , les mots que je veut modifiés via VBA ( manuelement il n'y a aucun soucis ) , sont compris dans une zone nommé Text Box X .
Je n'ai pas fait moi-même ce graphique , text box n'est donc peut-être pas le bon terme employé .
La modification du graphique , en lui même , peut se faire mais si je peut éviter ça sera toujours mieux ^^ .
Mais en vu , de la macro je crois que je ne vais aps avoir d'autre choix , vu qu'elle n'a pas l'air de reconnaitre ces fameux TextBox ...




Oki, donc t'as un onglet graphique.
Normalement, tu ne peux pas poser de textbox (au sens Contrôles) sur un chart. :??: 

Affiche la barre d'outil "Boîte à outils Contrôles"
Clique sur l'icône "Mode création" (la première, repésentant une règle, une équerre et un crayon).
Sélectionne ton textbox.
Bouton droit/Propriété. Tu devrais pouvoir lire le nom de ton textbox.

Pour accéder au texte, c'est comme ça :
  1. tafeuille.Shapes("TextBox1").DrawingObject.Object.Text = "ton texte"

J'ai dejà accès au Nom de ces " text box " dans la zone Nom .
En regardant , il semblerait que l'auteur du graph est simplement fait "Outil de graphique" > "Disposition" > "Zone de texte" et les a rennomer en tant que "text box " , ce ne sont pas des textBox comme on peut en voir dans un UserForm .

J'ai essayer ton bout de code :
  1. Worksheets("Feuil 1").Shapes("Text Box 5").DrawingObject.Object.Text = "Name"


Mais il m'indique que l'élément portant ce nom est introuvable et je n'ai pas fait de fautes dans mes noms :/ 

  1. Worksheets("Feuil 1" ).Shapes("Text Box 5").Characters.Text = "Néime"


Eh, et la méthode 2 que je te proposais dans mon premier message ?
Posez votre question