Revenir à l'onglet précédemment ouvert
Résolu
boban90
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
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 :
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 :-)
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 :-)
A voir également:
- Revenir à l'onglet précédemment ouvert
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Comment revenir à l'écran normal ? - Guide
- Rouvrir onglet fermé chrome - Guide
- Revenir à la ligne dans une cellule excel mac - Guide
- Revenir à la ligne chatgpt - Forum Réseaux sociaux
2 réponses
Bonjour,
Il faut absolument éviter les .Select inutiles...
Donc...
A tester :
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
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 :
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
Si celle-ci fonctionne, il n'y a pas de raison que celle-la moins.
ça fera toujours un Select de 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
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?