Vider feuille Excel à la fermeture d'une macro

Fermé
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 - 10 févr. 2014 à 10:58
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 14 févr. 2014 à 23:53
Bonjour,

j'aimerai vider une feuille Excel à la fermeture de la macro.

J'ai, dans ThisWorkBook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

ThisWorkbook.Sheets("suivi").Range("A1:Z100").ClearContents

End Sub

Mais ça ne fonctionne pas ! Pourtant, quand j'associe ça à un CommandButton, ça fonctionne...

Une idée ? Merci





A voir également:

4 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
10 févr. 2014 à 11:07
Bojour,

Le code fonctionne bien !!!!!!
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
10 févr. 2014 à 11:08
Ben merdouille ! Pas chez moi....

Quand je dis la fermeture de la macro, c'est en cliquant sur la croix, en haut à droite...
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
10 févr. 2014 à 11:09
Re,

Croix fermeture classeur .....
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
10 févr. 2014 à 11:11
ah et comment je peux faire pour, qu'en cliquant sur la croix, ça me nettoie une feuille spécifiée ?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
10 févr. 2014 à 11:13
Re,

Ben:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

ThisWorkbook.Sheets("suivi").Range("A1:Z100").ClearContents

End Sub

Vous avez plusieurs classeurs ouverts ????
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
10 févr. 2014 à 11:15
Non. Juste un seul ! Mais j'ai plusieurs feuilles et il n'y a qu'une seule feuille qui doit être "nettoyée".
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
10 févr. 2014 à 11:17
Bonjour,

Ce n'est pas bien clair !!!

Là c'est la fermeture du fichier qui déclenche la ligne
ThisWorkbook.Sheets("suivi").Range("A1:Z100").ClearContents


Voilà comment je ferais si je devais, dans mon code effacer des plages:

Public Sub EffacePlage(ByRef plage As Range)

     plage.ClearContents

End Sub

Sub MaMacro()

' Mon code ....

' Efface la plage (A1: Z100) de la feuille "suivi"
Dim mPlage As Range

Set mPlage = ThisWorkbook.Sheets("suivi").Range("A1:Z100")

Call EffacePlage(mPlage)

Set mPlage = Nothing

' Efface la plage (M10: V100) de la feuille "Temp"
Set mPlage = ThisWorkbook.Sheets("Temp").Range("M10:V100")

Call EffacePlage(mPlage)

Set mPlage = Nothing

End Sub


;0)
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
12 févr. 2014 à 09:54
Bonjour,

Oui mais il faut effacer et FERMER le programme en même temps... Là je ne vois que l'effacement des plages.
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
12 févr. 2014 à 10:22
Bonjour Polux31,

c'est bien a la fermeture du fichier que la plage de l'onglet suivi doit etre "razee"

Thesentry, avez-vous essaye ce que j'ai ecrit Lien (#8)
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
12 févr. 2014 à 10:52
Bonjour f894009,

je n'avais pas vu votre com.

Je ne comprends pas votre démarche...
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 12/02/2014 à 11:58
Re,

Vous ne devriez pas vous facher ainsi, car loin de nous cette idee d'en remontrer a qui que ce soit,
vu que nous avons tous debute un jour et comme vous avoir quelque peu galere.

Si je fais toujours parti de ceux qui peuvent vous entretenir sur votre sujet, lisez la suite



Lien (#8)
Le but de cette manip est de voir si a la fermeture de votre fichier, le pointeur de programme passe bien dans le module Thsiworkbook et traite l'evenement:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

exemple de code:

https://www.cjoint.com/?DBmlVtwwSKe

ouvrez le fichier, remplissez des cases zone A1 a K20, fermez le fichier, enregistrez et ouvrez de nouveau le fichier

A+ si vous le voulez ...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 févr. 2014 à 10:48
Bonjour f894009,

J'ai dit Voilà comment je ferais si je devais, dans mon code effacer des plages. Je ne parle pas de la fermeture du fichier.

Le premier énoncé du problème n'est ni clair, ni suffisamment explicite.
j'aimerai vider une feuille Excel à la fermeture de la macro.
Et le code se trouve dans Workbook_BeforeClose.

J'ai donné une façon de faire pour appeler la procédure EffacePlage n'importe où dans le code. Ce qui est quand même pas trop compliqué à mettre en place.

Chez moi ça fonctionne, j'ai bien le message de confirmation de sauvegarde des modif avant la fermeture.

0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
12 févr. 2014 à 10:52
Re,

Ce qui est quand même pas trop compliqué à mettre en place.

Tout a fait d'accord, mais il semblerait que Thesentry soit en difficulte pour une raison qui nous echappe.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 févr. 2014 à 11:15
Re,

On est bien d'accord et sur la même longueur d'onde ^^
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
Modifié par thesentry le 12/02/2014 à 11:22
Bon, je vais le répéter pour les personnes qui ont un peu de mal à intégrer certaines choses et qui commencent un peu à me gonfler à me prendre de haut comme ça :

Le VBA, je n'en ai jamais fait, je n'ai jamais eu de cours dessus et jusqu'à il y a 3 mois, je ne connaissais même pas l'existence de ce langage. J'ai un projet d'entreprise dans lequel je dois développer un mini ERP en VBA.

Le net regorge de petits cours ici et là, de petits tutos...certes. Mais quand tu n'as pas la logique de programmation, la logique VBA et que de base, l'informatique n'est pas du tout ton domaine professionnel, au bout d'un moment, tu t'embourbes.

De là te viens une idée géniale : user des technologies de nos jours et solliciter des personnes sur des forums. Mais sans compter sur une brochette de petits rigolos qui pètent plus haut que leur c*l sous prétexte sur le VBA est monnaie courante pour eux. Ben excusez moi, mais ce n'est pas mon cas.

Maintenant, pour éviter à l'avenir les réponses hautaines de certaines personnes, je les invite à retenir mon pseudo et à ne plus participer à mes topics (et je ne citerai pas de pseudo...sauf peut être toi Polux).

Merci d'avance !

TS
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 févr. 2014 à 12:13
N'inverse pas les rôles pour essayer de passer pour une victime.

Le demandeur ici, c'est toi et pas nous.

On essaye de t'aider et on aimerait bien ne pas être obligé de faire le boulot à ta place, ce qui ne te servirai à rien. Il y a des pistes qui te sont données et où il n'y a aucun retour de ta part.

Maintenant que tu prennes ça bien ou mal, ça ne me fait ni chaud ni froid.
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
12 févr. 2014 à 12:18
Je vais te faire gagner du temps dans ta vie. Merci de ne plus participer à mes topics.
0