VBA : Modifier des formes automatiques .

  • Auteur de la discussion noircafe
  • Date de début

noircafe

Nouveau membre
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 :

[cpp]Worksheets("Feuil1").shapes("Text Box 7").DrawingObject.text ="test"

[/cpp]

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

NoirCafé .
 

zeb

Modérateur
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 :
Code:
Sub on_s_arrete()
    Stop
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.
 

noircafe

Nouveau membre
Bonjour zeb

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

Voilà la macro obtenue :
[cpp]Sub Macro1()
'
' Macro1 Macro
'

'
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.ChartArea.Select
End Sub
[/cpp]

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
 

zeb

Modérateur
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.)
 

noircafe

Nouveau membre
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 ...




 

zeb

Modérateur
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 :
Code:
tafeuille.Shapes("TextBox1").DrawingObject.Object.Text = "ton texte"
 

noircafe

Nouveau membre
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 :
[cpp]Worksheets("Feuil 1").Shapes("Text Box 5").DrawingObject.Object.Text = "Name"[/cpp]

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

zeb

Modérateur
Code:
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 ?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 033
Membres
1 586 388
Dernier membre
mery2005
Partager cette page
Haut