[Excel 2010] suppression chart / copy chart

Résolu/Fermé
jeje1712 Messages postés 17 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 11 octobre 2013 - 6 sept. 2013 à 16:48
jeje1712 Messages postés 17 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 11 octobre 2013 - 11 sept. 2013 à 16:29
Bonjour,


j'ai un petit soucis avec ma macro.

son but est de copier un chart ("Chart 1") du workbook "wbA1" et de le copier dans un autre workbook, "wbB". Son nom est alors Chart 1


Je fais de même avec "Chart 1" de wbA2 que je copie aussi dans wbB, il s'apelle alors Chart 2.
Je fais de même avec "Chart 1" de wbA3 que je copie aussi dans wbB, il s'apelle alors Chart 3.
Je fais de même avec "Chart 1" de wbA4 que je copie aussi dans wbB, il s'apelle alors Chart 4.
...
Je fais de même avec "Chart 1" de wbA10 que je copie aussi dans wbB, il s'apelle alors Chart 10.



tout ceci marche très bien.

si je cherche à relancer ma macro, par contre ça bug : malgré le fait d'avoir supprimer tout les chart présent via une construction type :

If wbA2.ws.ChartObjects.Count > 0 Then
ws.ChartObjects.Delete
End If

(j'ai simplifier, wbA2 et ws sont bien déclarer correctement, la suppression marche très bien)

sa marche aussi avec une structure type :

Dim g As Chart
For Each g In ThisWorkbook.Charts
g.Delete
Next



donc comme je disais la suppression marche très bien, la macro continue, et je cherche alors à copier Chart 1 de wbA1, dans wbB, mais celui-ci prend le nom Chart 11 et non Chart 1.
en fin de compte, il y a comme un compteur global des charts présents sur la feuille mais qui n'est pas remis à zéro lors de leur suppression, l'incrémentation du numéro de chart continue à la suite des précédents lors de la seconde exécution de la macro.

Et là, je vois pas quoi chercher sur google pour me guider, ya un compteur propre à excel, ou lié au presse-papier, dont je n'arrive pas à trouver de référence sur le net ou dans l'aide vba.



si quelqu'un a une idée, je suis preneur, la macro marche très bien à partir d'une feuille vierge.






PS: je sais que ça marchera mieux en renommant le chart après sa copie, mais la question est de savoir si ya vraiment un compteur, que l'on peut toucher (reset) pour éviter ceci


cdlt
A voir également:

3 réponses

Son_of_God Messages postés 2 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 6 septembre 2013
Modifié par Son_of_God le 6/09/2013 à 17:21
Si tu ne veux pas que ton code fait la copie du chart en incrémentant son indice, il faut renommer le chart 1 comme chart. Efface l'indice qui est incrémenté, ou efface l'espace qui sépare chart et 1 pour écrire tout simplement chart1 ou chart.
J'espère que ça marche.

Merci
0
jeje1712 Messages postés 17 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 11 octobre 2013
11 sept. 2013 à 15:13
bonjour,


En fait ça ne m'aide pas vraiment, car pour renommer ce chart, j'ai besoin de le renommer sur le worbook d'origine, sauf que je ne veut pas agir sur le workbook d'origine.

et dès sa copie, son nom à changer pour un Chart XX.






pour information, j'ai le même problème avec une fonction du Data Analysis Tool :

je cherche à faire un histogramme, tout marche au poil, sauf que l'histogramme créé s'apelle Chart 1 la première fois, puis Chart 1+X si je ré-éxécute X fois la macro.


donc je n'arrive pas agir sur ce graph car son nom change dès sa création, et il ne me semble pas que je puisse agir sur l'object chart dès le codage VBA.


Le code en question permettant de faire un histogramme via le data analysis tool :

Application.Run "ATPVBAEN.XLAM!Histogram", .Range("I121:I" & intNbcells114), .Range("$N$302:$N$302"), .Range("M303:M323"), False, False, True, False




des suggestions ?
0
jeje1712 Messages postés 17 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 11 octobre 2013
11 sept. 2013 à 16:29
bon bin à force de fouiner j'ai trouver de quoi faire :

je vais compter les charts présent sur l'onglet, :

dim intNbChart as integer
intNbChart = .ChartObjects.Count

et je renomme le dernier, qui est bien celui que je viens de créer, peut importe son vrai nom (ce fameux nom qui est incrémenté sans arrêt) :

.ChartObjects(intNbChart).Name = "Histogramme"




Pour info, je ne connaissais pas cette méthode, si ça peut aider voici les deux façon :


'Renommer le graphique sélectionné
ActiveChart.Parent.Name = "Nouveau_Nom_1"

'Renommer le 2e graphique de l'onglet
ActiveSheet.ChartObjects(2).Name = "Nouveau_Nom_2"
0