[Excel 2010] suppression chart / copy chart
Résolu
jeje1712
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
jeje1712 Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
jeje1712 Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
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
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:
- [Excel 2010] suppression chart / copy chart
- Forcer suppression fichier - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Clé activation office 2010 gratuit - Télécharger - Sécurité
3 réponses
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
J'espère que ça marche.
Merci
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 ?
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 ?
bon bin à force de fouiner j'ai trouver de quoi faire :
je vais compter les charts présent sur l'onglet, :
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) :
Pour info, je ne connaissais pas cette méthode, si ça peut aider voici les deux façon :
'Renommer le graphique sélectionné
'Renommer le 2e graphique de l'onglet
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"