OVH Cloud OVH Cloud

Enregistrer sur une feuille avec Workbook_BeforeSave

9 réponses
Avatar
Nicolas B.
Bonjour à tous (et joyeuses fêtes),

Par macro : à l'aide de Workbook_BeforeSave, je peux faire une macro qui
lorsque j'enregistre sélectionne une autre feuille que celle active.
Le problème, c'est que je voudrais revenir sur la feuille initiale après
l'enregistrement, et là, je coince.

Autrement dit, lorsque je clique sur Enregistrer, je veux :
sélectionner la feuille 2,
enregistrer,
sélectionner la feuille 1,
et là ne pas enregistrer à nouveau, ce que fait Excel dans toutes mes
tentatives.


Merci de votre aide

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

9 réponses

Avatar
isabelle
bonjour Nicolas,

Set f = ActiveSheet
Sheets("Feuil2").Select
'reste de la macro
f.Select

isabelle ( qui vous souhaite de très joyeuses fêtes )


Bonjour à tous (et joyeuses fêtes),

Par macro : à l'aide de Workbook_BeforeSave, je peux faire une macro qui
lorsque j'enregistre sélectionne une autre feuille que celle active.
Le problème, c'est que je voudrais revenir sur la feuille initiale après
l'enregistrement, et là, je coince.

Autrement dit, lorsque je clique sur Enregistrer, je veux :
sélectionner la feuille 2,
enregistrer,
sélectionner la feuille 1,
et là ne pas enregistrer à nouveau, ce que fait Excel dans toutes mes
tentatives.

Merci de votre aide

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Avatar
Nicolas B.
Bonsoir isabelle,

Ce n'est malheureusement pas ce que je recherche : mon problème se situe au
niveau de l'enregistrement, pas de la sélection des feuilles.

Si je mets le code ci-dessous, il y a deux enregistrements : un au
ActiveWorkbook.Save, puis un à la fin (c'est normal) :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
End Sub

Pour supprimer l'enregistrement de la fin je fais ceci :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
Cancel = True
End Sub

Mais là, il n'est pas possible d'enregistrer : ActiveWorkbook.Save semble à
nouveau déclencher la macro, et ça ne marche pas...

Je ne sais plus quoi faire :-(


Merci

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


bonjour Nicolas,

Set f = ActiveSheet
Sheets("Feuil2").Select
'reste de la macro
f.Select

isabelle ( qui vous souhaite de très joyeuses fêtes )


Bonjour à tous (et joyeuses fêtes),

Par macro : à l'aide de Workbook_BeforeSave, je peux faire une macro
qui lorsque j'enregistre sélectionne une autre feuille que celle
active.
Le problème, c'est que je voudrais revenir sur la feuille initiale
après l'enregistrement, et là, je coince.

Autrement dit, lorsque je clique sur Enregistrer, je veux :
sélectionner la feuille 2,
enregistrer,
sélectionner la feuille 1,
et là ne pas enregistrer à nouveau, ce que fait Excel dans toutes mes
tentatives.

Merci de votre aide

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC




Avatar
JLuc
Salut Nicolas B.,
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Ceci est une procedure qui, comme sont nom l'indique, est appelee juste
avant la
sauvegarde du classeur, alors il faut
- sauvegarder
Private Sub Workbook_BeforeSave(...)
Sheets("2").Select
End Sub
(Devrai suffir)

- Selectionner la feuille "1"
- Quitter sans sauver
J'espere que ca repond a ta question
A+ et Bonnes fêtes
--

JLuc
Pour m'ecrire, supprimer 'ns.' dans l'adresse.
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
Bonsoir isabelle,

Ce n'est malheureusement pas ce que je recherche : mon problème se
situe au niveau de l'enregistrement, pas de la sélection des feuilles.

Si je mets le code ci-dessous, il y a deux enregistrements : un au
ActiveWorkbook.Save, puis un à la fin (c'est normal) :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
End Sub

Pour supprimer l'enregistrement de la fin je fais ceci :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
Cancel = True
End Sub

Mais là, il n'est pas possible d'enregistrer : ActiveWorkbook.Save
semble à nouveau déclencher la macro, et ça ne marche pas...

Je ne sais plus quoi faire :-(


Merci


bonjour Nicolas,

Set f = ActiveSheet
Sheets("Feuil2").Select
'reste de la macro
f.Select

isabelle ( qui vous souhaite de très joyeuses fêtes )


Bonjour à tous (et joyeuses fêtes),

Par macro : à l'aide de Workbook_BeforeSave, je peux faire une macro
qui lorsque j'enregistre sélectionne une autre feuille que celle
active.
Le problème, c'est que je voudrais revenir sur la feuille initiale
après l'enregistrement, et là, je coince.

Autrement dit, lorsque je clique sur Enregistrer, je veux :
sélectionner la feuille 2,
enregistrer,
sélectionner la feuille 1,
et là ne pas enregistrer à nouveau, ce que fait Excel dans toutes
mes tentatives.

Merci de votre aide

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC






Avatar
Nicolas B.
Salut JLuc,

Merci pour ta réponse.

- Selectionner la feuille "1"
Le problème est que je veux que cette étape soit faite automatiquement.


Bien que ThisWorkbook_BeforeSave s'exécute avant l'enregistrement, je
pensais que ce serait possible d'arriver quand même au résultat en jouant
sur Cancel = True. Mais maintenant je doute...


A+ et bonnes fêtes
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Salut Nicolas B.,
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Ceci est une procedure qui, comme sont nom l'indique, est appelee
juste avant la
sauvegarde du classeur, alors il faut
- sauvegarder
Private Sub Workbook_BeforeSave(...)
Sheets("2").Select
End Sub
(Devrai suffir)

- Selectionner la feuille "1"
- Quitter sans sauver
J'espere que ca repond a ta question
A+ et Bonnes fêtes

JLuc
Pour m'ecrire, supprimer 'ns.' dans l'adresse.
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
Bonsoir isabelle,

Ce n'est malheureusement pas ce que je recherche : mon problème se
situe au niveau de l'enregistrement, pas de la sélection des
feuilles.

Si je mets le code ci-dessous, il y a deux enregistrements : un au
ActiveWorkbook.Save, puis un à la fin (c'est normal) :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
End Sub

Pour supprimer l'enregistrement de la fin je fais ceci :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
Cancel = True
End Sub

Mais là, il n'est pas possible d'enregistrer : ActiveWorkbook.Save
semble à nouveau déclencher la macro, et ça ne marche pas...

Je ne sais plus quoi faire :-(


Merci




Avatar
Frédéric Sigonneau
Bonjour,

Peut-être de cette façon ?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ActiveWorkbook
.Sheets("Feuil2").Select
.Save
If .Saved Then
Cancel = True
.Sheets("Feuil1").Select
End If
End With
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir isabelle,

Ce n'est malheureusement pas ce que je recherche : mon problème se situe au
niveau de l'enregistrement, pas de la sélection des feuilles.

Si je mets le code ci-dessous, il y a deux enregistrements : un au
ActiveWorkbook.Save, puis un à la fin (c'est normal) :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
End Sub

Pour supprimer l'enregistrement de la fin je fais ceci :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets("2").Select
ActiveWorkbook.Save
Sheets("1").Select
Cancel = True
End Sub

Mais là, il n'est pas possible d'enregistrer : ActiveWorkbook.Save semble à
nouveau déclencher la macro, et ça ne marche pas...

Je ne sais plus quoi faire :-(

Merci

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

bonjour Nicolas,

Set f = ActiveSheet
Sheets("Feuil2").Select
'reste de la macro
f.Select

isabelle ( qui vous souhaite de très joyeuses fêtes )


Bonjour à tous (et joyeuses fêtes),

Par macro : à l'aide de Workbook_BeforeSave, je peux faire une macro
qui lorsque j'enregistre sélectionne une autre feuille que celle
active.
Le problème, c'est que je voudrais revenir sur la feuille initiale
après l'enregistrement, et là, je coince.

Autrement dit, lorsque je clique sur Enregistrer, je veux :
sélectionner la feuille 2,
enregistrer,
sélectionner la feuille 1,
et là ne pas enregistrer à nouveau, ce que fait Excel dans toutes mes
tentatives.

Merci de votre aide

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC






Avatar
Nicolas B.
Bonjour,

Merci ça fonctionne. Il reste cependant un petit problème : lorsque j'ouvre
le classeur, que je fais des modifications et que je ferme, Excel me demande
deux fois si je veux enregistrer les modifications. J'aimerais pouvoir
n'afficher le message qu'une seule fois (ni 2 fois, ni 0).


Merci encore et bon Noël.

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour,

Peut-être de cette façon ?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean) With ActiveWorkbook
.Sheets("Feuil2").Select
.Save
If .Saved Then
Cancel = True
.Sheets("Feuil1").Select
End If
End With
End Sub

FS


Avatar
Frédéric Sigonneau
Re,

Si tu es absolument certain qu'entre le moment où tu as enregistré ton classeur
et celui où tu le fermes il n'y a eu aucun autre changement à conserver, tu peux
essayer, toujours dans le module ThisWorkbook et en plus du code dans
Workbook_BeforeSave :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,

Merci ça fonctionne. Il reste cependant un petit problème : lorsque j'ouvre
le classeur, que je fais des modifications et que je ferme, Excel me demande
deux fois si je veux enregistrer les modifications. J'aimerais pouvoir
n'afficher le message qu'une seule fois (ni 2 fois, ni 0).

Merci encore et bon Noël.

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

Bonjour,

Peut-être de cette façon ?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean) With ActiveWorkbook
.Sheets("Feuil2").Select
.Save
If .Saved Then
Cancel = True
.Sheets("Feuil1").Select
End If
End With
End Sub

FS




Avatar
Nicolas B.
Ben là il n'y a plus aucun message d'alerte. Je voulais en fait savoir s'il
était possible d'en afficher un seul, mais pas les deux.

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Re,

Si tu es absolument certain qu'entre le moment où tu as enregistré
ton classeur et celui où tu le fermes il n'y a eu aucun autre
changement à conserver, tu peux essayer, toujours dans le module
ThisWorkbook et en plus du code dans Workbook_BeforeSave :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
End Sub

FS


Bonjour,

Merci ça fonctionne. Il reste cependant un petit problème : lorsque
j'ouvre le classeur, que je fais des modifications et que je ferme,
Excel me demande deux fois si je veux enregistrer les modifications.
J'aimerais pouvoir n'afficher le message qu'une seule fois (ni 2
fois, ni 0).

Merci encore et bon Noël.

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

Bonjour,

Peut-être de cette façon ?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean) With ActiveWorkbook
.Sheets("Feuil2").Select
.Save
If .Saved Then
Cancel = True
.Sheets("Feuil1").Select
End If
End With
End Sub

FS






Avatar
Frédéric Sigonneau
Re,

Désolé, je ne comprends plus du tout où tu veux en venir et ce que tu veux
obtenir..
Je passe la main.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Ben là il n'y a plus aucun message d'alerte. Je voulais en fait savoir s'il
était possible d'en afficher un seul, mais pas les deux.

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

Re,

Si tu es absolument certain qu'entre le moment où tu as enregistré
ton classeur et celui où tu le fermes il n'y a eu aucun autre
changement à conserver, tu peux essayer, toujours dans le module
ThisWorkbook et en plus du code dans Workbook_BeforeSave :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
End Sub

FS


Bonjour,

Merci ça fonctionne. Il reste cependant un petit problème : lorsque
j'ouvre le classeur, que je fais des modifications et que je ferme,
Excel me demande deux fois si je veux enregistrer les modifications.
J'aimerais pouvoir n'afficher le message qu'une seule fois (ni 2
fois, ni 0).

Merci encore et bon Noël.

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

Bonjour,

Peut-être de cette façon ?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean) With ActiveWorkbook
.Sheets("Feuil2").Select
.Save
If .Saved Then
Cancel = True
.Sheets("Feuil1").Select
End If
End With
End Sub

FS