Fermeture Classeur et presse-papier

Bonjour à toutes et à tous,

Dans le code suivant : Consolidation de CA et Marge Journaliers.

Sub CONSOLIDATION()

Application.ScreenUpdating = False

Sheets("Total Magasin").Select

Range("A1:R500").ClearContents

Dim Chemin As String

Dim Fichier As String

Chemin = "C:\Users\Adeli\OneDrive\Bureau\EXCEL Cyril\Test CONSOLIDATION\"

Fichier = Dir(Chemin & "*.xlsm*")

Do While Len(Fichier) > 0

Workbooks.Open Chemin & Fichier

Sheets("Feuil1").Activate

Range("A7:R37").Select

Selection.Copy

Windows("Consolidation L UNION CAHIER 2324.xls").Activate

Sheets("Total Magasin").Select

Dligne = Range("A500").End(xlUp).Row

DDligne = Dligne + 1

Range("A" & DDligne).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Windows(Fichier).Close

Fichier = Dir

Loop

End Sub

Lorsque que je ferme le classeur, j'ai un message pour conserver ou vider les données du presse papier (OUI, NON, ANNULER).

Existe t-il une commande pour supprimer cette question ? Si oui, à quel niveau de la macro je dois l'insérer ?

Je monte progressivement en compétences sur VBA....

Bien Cordialement.

Bonjour onizuka, le forum,

essaye déjà ce que te propose Steelson ; si ça marche : ok ; sinon, lis la suite de ce post.


Étape 1 - au début du module, mets :

Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function CloseClipboard Lib "user32" () As Long

Étape 2 - mets cette sub soit juste après, soit où tu veux.

Sub Vider_Presse_Papier()
  OpenClipboard 0
  EmptyClipboard
  CloseClipboard
End Sub

Étape 3 - appelle la sub là où tu veux vider le presse-papiers :

Sub Essai()
  Vider_Presse_Papier
End Sub

dhany

Bonjour,

Merci beaucoup, tout fonctionne !!!

A bientôt pour les prochaines questions....

merci pour ton retour, j'suis ravi d'avoir pu t'aider !

bonne continuation, et à bientôt !

dhany

Bonjour,

est-ce que ceci

Application.cutcopymode = false

a suffi ou a-t-il fallu passer à la méthode dhany (juste pour me compréhension) ?

Bonjour,

Oui cela fonctionne.

J'ai positionné cette ligne de code juste après la copie spéciale.

Merci encore.

CDLT.

C'est fait !!

CDLT.

Bonjour, Salut à tous !

Bien sûr que la proposition de Steelson suffisait !

Avec ta macro enregistrée, tu illustres parfaitement le fait que lorsque l'enregistreur t'insère Application.CutCopyMode = False, c'est qu'il n'y en a aucun besoin et qu'il convient de le supprimer lors de l'épuration de la macro, par contre il convient souvent de l'introduire à la fin si l'enregistreur ne l'a pas fait car s'il ne l'a pas fait c'est qu'il y a besoin de le mettre !

NB- Epurer ta macro serait une bonne chose et cela te permettrait d'apprendre ce qui est utile ou non, en vue de te passer définitivement de l'enregistreur pour écrire une macro (car on n'apprend rien avec l'enregistreur) : supprimer tout Select ou Activate ou Selection, etc., qualifier les expressions par un raccordement explicite à l'objet parent, éliminer le recours à l'objet Window, supprimer la définition de paramètres de méthodes à leur valeur par défaut puisque ne modifiant pas leur valeur elle n'est pas à redéfinir.

Et pour ce qui relève de ton intervention sur la macro : déclarer toutes tes variables et non seulement une partie et les déclarer toutes en début de procédure... Tu verras qu'on gagne à respecter les règles de base...

Merci de ton retour.

J’apprends au fur et à mesure sur vba, je n’ai pas encore tous les réflexes et bonnes pratiques...😓😓😓

Ça va venir !!!!

Un peu de cours sur les rudiments VB indispensables offrirait une structure plus solide pour la suite...

Cordialement.

Rechercher des sujets similaires à "fermeture classeur presse papier"