Autoincrémentation du nom de mon graphique lors de l'execution d'une macro

Signaler
Messages postés
11
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
17 avril 2009
-
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
Bonjour

voici mon problème :

J'ai une macro qui copie un graphique et le colle dans une autre fenêtre lorsqu'elle est exécuté. Le problème c'est que je veux créer une deuxième macro qui permet d'effacer le graphique lors de l'execution de celle-ci, mais le nom de mon graphique s'incrémente à chaque utilisation de la macro copiegraphique, et la macro d'effacage ne trouve donc plus le graphique a effacer ...

Comment contourner cette autoincrémentation pour que le graphique collé est toujours le même nom?

mon code actuel pour la copie

Sub copiegraphique()
    Sheets("graphiques supplémentaires").Select
    If Range("B1") <> "" Then
    ActiveSheet.ChartObjects("Graphique R_bar").Activate
    ActiveChart.ChartArea.Select
    ActiveChart.ChartArea.Copy
    Sheets("analyse de capabilité").Select
    Range("B57").Select
    ActiveSheet.Paste
    End If
End Sub

et pour l'effacage

    ActiveSheet.ChartObjects("Graphique 26").Activate    <<<< le problème se situe ici
    ActiveChart.ChartArea.Select
    Windows("Fichier capabilité modifié.xls").SmallScroll Down:=-12
    ActiveWindow.Visible = False
    Selection.Delete

1 réponse

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

' la ligne suivante est a placer en haut du module
Dim GraphName As String, MySheetName As  String

Sub copiegraphique()
    MySheetName = "analyse de capabilité"
    Sheets("graphiques supplémentaires").Select
    If Range("B1") <> "" Then
        ActiveSheet.ChartObjects("Graphique R_bar").Copy
        Sheets(MySheetName).Select
        Range("B57").Select
        ActiveSheet.Paste
        GraphName = Replace(lcase(ActiveChart.Name), lcase(MySheetName) & " ", "")
    End If
End Sub

et pour l'effacage

    ActiveSheet.ChartObjects(GraphName).Delete

comme tu peux le remarquer j'ai simplifié le code mais une chose
importante est qu'il ne faut pas le simplifier plus c'est a dire qu'il
faut conserver :


        Sheets(MySheetName).Select

        Range("B57").Select

        ActiveSheet.Paste


pour que la ligne sui vante fonctionne

GraphName = Replace(lcase(ActiveChart.Name), lcase(MySheetName) & " ", "")

A+