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

guivrator Messages postés 11 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 17 avril 2009 - 2 juin 2008 à 15:47
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 2 juin 2008 à 16:50
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

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
2 juin 2008 à 16:50
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+
0
Rejoignez-nous