Revenir à l'onglet précédemment ouvert

Résolu
boban90 -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

Je m'adresse à vous puisque j'ai un problème que je ne parviens pas à résoudre.

Voici ce que je veux faire :
1) dans mon classeur excel, je me positionne sur une feuille nommée "Ormesson S18" (le nom va varier à chaque fois)
2) une fois sur cette feuille, je copie un graphe provenant d'une feuille fixe nommée "Graphe" (tout se passe dans le même classeur)
3) je colle ce graphe en metafile dans ma feuille "Ormesson S18", en cellule B104.

Voici mon ébauche de solution :
J'ai alors commencé à écrire une macro, mais elle fonctionne lorsque ma feuille active est "Ormesson S18" et casse logiquement dès que je change de nom.
Voici ma macro :

Sub Macro4()
'
' Macro4 Macro
'

'
Sheets("Graphe").Select
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.ChartArea.Copy
Sheets("Ormesson S18").Select
Range("B104").Select
ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False _
, DisplayAsIcon:=False
End Sub


Voici mon problème :
Je souhaite remplacer dans ma macro la feuille "Ormesson S18" par "la feuille depuis laquelle j'exécute initialement la macro" voire "la feuille ouverte juste avant d'ouvrir ma feuille Graphe"

Quelqu'un aurait-il une solution?

Merci d'avance pour le temps que vous avez passé à me lire :-)

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Il faut absolument éviter les .Select inutiles...
Donc...
A tester :
Sub Macro4()
'
' Macro4 Macro
'

'
    Sheets("Graphe").ChartObjects("Chart 2").ChartArea.Copy
    ActiveSheet.Range("B104").PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False _
        , DisplayAsIcon:=False
End Sub

0
boban90
 
Bonjour pijaku,

Merci pour l'astuce, je comprends bien la logique : si on supprime les select, on reste sur la même feuille et on se simplifie la vie tout en gagnant en simplicité.

Maintenant, le code en l'état ne fonctionne pas, en effet la partie :
Sheets("Graphe").ChartObjects("Chart 2").ChartArea.Copy
n'est pas reconnue alors que mon ancien code fonctionne.

Avez-vous une idée de l'origine de cette erreur?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Peut être, je n'ai pas testé, ne peut-on pas copier directement les graph...

Alors, il convient de stocker le nom de la feuille d'ou tu lances la macro :
Sub Macro4()
'
' Macro4 Macro
'
Dim Feuille As WorkSheet
    Set Feuille = ActiveSheet
    Sheets("Graphe").Select
    ActiveSheet.ChartObjects("Chart 2").Activate
    ActiveChart.ChartArea.Copy
    Feuille.Select
    Range("B104").Select
    ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False _
        , DisplayAsIcon:=False
End Sub

0
boban90
 
Merci beaucoup pijaku,

En effet cette nouvelle version du code fonctionne à merveille, M.E.R.C.I :-)
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > boban90
 
Si celle-ci fonctionne, il n'y a pas de raison que celle-la moins.
ça fera toujours un Select de moins :
Sub Macro4()
'
' Macro4 Macro
'
Dim Feuille As WorkSheet
    Set Feuille = ActiveSheet
    Sheets("Graphe").Select
    ActiveSheet.ChartObjects("Chart 2").Activate
    ActiveChart.ChartArea.Copy
    Feuille.Select
    Range("B104").PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False _
        , DisplayAsIcon:=False
End Sub
0