Proprité Shapes et affectation de nom

  • Initiateur de la discussion laurence92_m
  • Date de début
L

laurence92_m

Guest
Bonjour,
Je cherche à exécuter un bout de code VB sous Excel

ActiveSheet.Shapes("Chart 12").Select

Mais je ne sais pas ou on affecte le nom ("Chart 12") en attribut de la propriété Shapes sous Excel.

Chart 12 devrait théoriquement correspondre à un graphe (pt-ê autre chose) ...Chart 12 n'existant pas dans ma feuille (puisque je ne sais pas le créer) mon code ne s'éxécute pas.

Merci toutes suggestions m'aidera bcq

Laurence
 
A

albert

Guest
bonjour laurence92_m,
lorsque tu crées un graphe avec l'enregistreur de macro, ce dernier donne un n° à ton graphe.
pour exécuter le code sans pb dans vba, il faut retirer la référence ("Chart 12")
pour ne garder que les ()

si ça ne marche pas, envoie un zip

albert
 
@

@+Thierry

Guest
Re: Propriété Shapes et affectation de nom

Bonjour Laurence, Albert, le Forum

Je ne suis pas sûr d'avoir bien saisi la question, et encore moins sûr d'avoir compris la réponse, mais juste pour faire avancer le Schmilblic voici ceci directement adapté depuis l'Aide VBA :

Sub VBAHelp01()
Dim MyDocument As Worksheet
Dim Sh As Shape

Set MyDocument = Worksheets(1)
For Each Sh In MyDocument.Shapes
If Sh.Type = msoChart Then
If Sh.Name = "Chart 12" Then
Sh.Select
End If
End If
Next
End Sub

Maintenant, il est certain que si il n'y a aucune Shape Chart il ne se passera rien, de la même manière qu'il se se passera rien si il y a bien une ou des Shape(s) mais qu'aucune ne se nomme "Chart 12"...

Eventuellement on peut sélectionner une Shape Chart de la feuille sans connaître son nom comme ceci : (à condition qu'elle soit unique)

Sub VBAHelp02()
Dim MyDocument As Worksheet
Dim Sh As Shape

Set MyDocument = Worksheets(1)
For Each Sh In MyDocument.Shapes
If Sh.Type = msoChart Then
Sh.Select
End If
Next
End Sub

Et éventuellement toujours sur le même principe de boucle on peut renommer le ou les objects Shape Charts comme suit :

Sub VBAHelp03()
Dim MyDocument As Worksheet
Dim Sh As Shape
Dim i As Byte

i = 1
Set MyDocument = Worksheets(1)
For Each Sh In MyDocument.Shapes
If Sh.Type = msoChart Then
Sh.Name = "MyChart" & i
i = i + 1
End If
Next
End Sub

Si cela peut t'aider à retrouver ton chemin (avec ou sans la Chart 12 !!)

Bonne Soirée
@+Thierry
 
L

laurence92_m

Guest
Resalut

Désolée de vous embéter encore

Je ne peux pas renomer tous les graphiques. Pour certains d'entre eux, j'ai un message d'erreur "Permission refusée". Comment puis-je faire?

Merci
Laurence
 
@

@+Thierry

Guest
Bonjour Laurence, Albert, le Forum

Huum... "Permission refusée" bizarre comme message... As-tu une protection du classeur, de la feuille ?

Sinon je ne vois pas, peut-être est-ce dû au nom que tu essaies de placer qui contient des caractères interdits ?

Ou bien tout bêtement tu as déjà fait tourner cette macro et il y a déjà des objets shapes qui contiennent le même nom... (Dans ce cas fait un "Reset des noms" en mettant "Toto" à la place de "MyChart" dans la boucle que je t'ai donnée ci-dessus...

Sinon tel quel je ne vois pas, même si tu as en dessous de 18 ans, Excel ne fait pas d'histoire en général et laisse la permission à tout le monde ! lol

Bon enfin je blague, mais bon appétit à tous et toutes
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
314 197
Messages
2 107 040
Membres
109 743
dernier inscrit
TROMBATI