Bonjour André, Pedro, le Forum
Il n'est pas nécessaire d'utiliser le DisplayAlert pour ce genre d'opération.
Par contre là où Pedro aura des soucis c'est pour décider depuis où il doit mettre son code pour qu'il s'éxécute...
Soit depuis un Classeur qui sera ouvert et lançant (par un bouton par exemple) une procédure comme ceci :
Sub ClosingTXTWithoutSaving()
Application.CutCopyMode = False
Workbooks("XLD-Database-2004-Up-FEB-15.txt").Close False
End Sub
NB je pars ici du principe qu'on connait le nom du fichier TXT ouvert
Soit on ne connait pas les noms des "*.txt" et on veut tous les fermer et pour ce faire on peut utiliser un fichier "Personal.Xls" (Perso.xls en version FR je crois) qui sera dans le répertoire "XLStart" et l'on met ce genre de code dans ce "Personal.xls" (on peut aussi le mettre dans un classeur normal of course)
Sub CloseAllTxt()
Dim WB As Workbook
Application.CutCopyMode = False
For Each WB In Workbooks
If UCase(Right(WB.Name, 3)) = "TXT" Then WB.Close False
Next
End Sub
L'idée m'est venue de placer un code comme ceci dans le Private Module de ThisWorkBook dans une évènementielle "Before_Close" de ce "Personal.xls" pour espérer, qu'automatiquement en quittant Excel, çà se fasse tout seul mais non hélas çà ne passe pas. Donc il semble qu'il faille lancer cette procédure depuis un bouton. (ou un évènement en amont)
Pour le presse papier, normalement le CutCopyMode à False vide le Presse Papier généré par Excel donc tout dépend de la nature du "copié" (on peut par exemple faire copier une cellule vide par exemple avant si ce n'est pas Excel qui est à l'origine du presse papier)
Bon Appétit à tous et toutes
@+Thierry