Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Presse papier se vide quand bascule sur autre tableur

guigui971

XLDnaute Junior
Bonjour,

Pour des raisons annexes (https://www.excel-downloads.com/threads/probleme-incomprehensible-sur-evenement-de-classeur.211528/), j'exécute le code ci-après lorsque je ferme mon classeur (Sub Workbook_BeforeClose(Cancel As Boolean)) ou que, sans le fermer, je passe sur un autre ouvert en parallèle (Sub Workbook_Deactivate()) :

Application.ScreenUpdating = False
ActiveWindow.View = xlNormalView
ActiveWindow.DisplayHeadings = True *
ActiveWindow.DisplayGridlines = True *
Application.DisplayStatusBar = True *
ActiveWindow.DisplayHorizontalScrollBar = True *
ActiveWindow.DisplayVerticalScrollBar = True *
Application.DisplayFullScreen = False
Application.DisplayFormulaBar = True *
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)" *
Application.ScreenUpdating = True

Malheureusement, si je veux copier des données de mon tableur d'origine (celui où j'ai ce code) vers l'autre tableur, les lignes de code sur lesquelles j'ai mis * semblent vider le presse papier !
Donc impossible de coller mes données dans l'autre tableur...

Voyez vous une solution pour contourner ce problème? (à part supprimer les lignes avec *...)

Merci
 
C

Compte Supprimé 979

Guest
Re : Presse papier se vide quand bascule sur autre tableur

Bonjour guigui971

Ton problème est normal, Excel vide le presse papier lors de certaines actions

Pour essayer de le résoudre, peut-être faut-il passer par la gestion du "Clipboard"
Voici un code
VB:
Sub Test()
  Dim dClipBoard As MsForms.DataObject
  Dim sClipBoard As String
  ' Mémoriser le presse papier dans une variable objet
  Set dClipBoard = New MsForms.DataObject
  dClipBoard.GetFromClipboard
  sClipBoard = dClipBoard.GetText
  ' Ton code ici
  Application.ScreenUpdating = False
  ActiveWindow.View = xlNormalView
  ActiveWindow.DisplayHeadings = True  '*
  ActiveWindow.DisplayGridlines = True  '*
  Application.DisplayStatusBar = True  '*
  ActiveWindow.DisplayHorizontalScrollBar = True  '*
  ActiveWindow.DisplayVerticalScrollBar = True  '*
  Application.DisplayFullScreen = False
  Application.DisplayFormulaBar = True  '*
  Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"  '*
  Application.ScreenUpdating = True
  ' Restaurer le presse papier à partir du contenu de la variable objet
  Set dClipBoard = New MsForms.DataObject
  dClipBoard.SetText sClipBoard
  dClipBoard.PutInClipboard
  ' Test
  Range("A1").Select
  ActiveSheet.Paste
End Sub

A+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…