Sauvegarder uen feuille d'un classeur [Résolu]

Signaler
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
-
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
-
Bonjour à tous,

Donc voilà, je sais que la réponse à déjà dû être donnée, mais je ne l'ai pas trouvée, mais c'est assez spécifique, alors je vais tacher d'être simple et explicite... aïe ;)

J'ai un classeur nommé "RapHebdo", dans ce classeur il y a une feuille nommée "MATRICE", cette feuille contient absolument toutes les données servant à la création des autres feuille.

Je voudrais donc savoir comment enregistrer uniquement cette feuille "MATRICE" à son emplacement d'origine ?

A savoir que s'il le faut, elle peut être écrasée.

J'ai déja un bout de code me permettant de valider la question de windows me demandant de l'écraser... que voici :

Application.DisplayAlerts = False
' Ta sauvegarde
Application.DisplayAlerts = True

Et pour la sauvegarde j'ai pensez à ceci :

ActiveSheets("MATRICE").SaveAs

Il en manque bien sure...

C'est pour cela que je vous fais appel.

Merci à tous
--

20 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
Je ne comprends pas :
"Je voudrais donc savoir comment enregistrer uniquement cette feuille "MATRICE" à son emplacement d'origine ? "
Explique très clairement ce que tu veux dire par là .
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Bien en faite, le but est d'enregistrer uniquement cette feuille.Peut importe si d'autre feuilles sont créées, elle ne sont pas garder de toute manière (ça c'est ma petite sécurité qui fait que certain chef ne pourrons plus modifier les pointages dans notre dos)... bref... blague à part

Quand je précise "à son emplacement d'origine", c'est sans importance.

Qu'est ce que tu ne comprend pas ?

--
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Je ne comprends toujours pas !
L'enregistrer dans quoi et sous quel nom, cette feuille ?
Explique-toi TECHNIQUEMENT et avec PRECISION.
Messages postés
32460
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
347
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Donc,

mon classeur de base s'appel RapHebdo, la feuille principale de ce classeur est "MATRICE", dans cette feuille sont stockées toutes les infos, c'est à dire : le nom des personne, les sites, les semaines.

elle est donc très importante. donc ce que je voudrais c'est que lorsque je clique sur mon bouton "Fermer le classeur", il ne m'enregistre que cette feuille "MATRICE" en gardant le nom de fichier "RapHebdo" et dans l'emplacement ou elle se trouve.

Est ce bon comme ça ?

--
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Bon, je tâche d'expliquer le fonctionnement de mon classeur en partie, puis j'en viens à ma question de départ, je pense que comme ça se sera plus compréhensible.

Donc :

quand j'ouvre mon classeur "RapHebdo", une feuille nommée "MATRICE" est dupliquée et nommé "VIERGE", cette feuille "MATRICE" est par la suite cachée.

Sur cette feuille "MATRICE" est stockée :

La liste des noms : je peux, via un USF en ajouter ou en supprimer
La liste des sites : idem
et autre liste

de la feuille "VIERGE" sont réalisés les rapport.

Ex: je choisi le nom de l'intervenant, le numero de la semaine puis, via une barre d'outil, je clique sur le bouton "pointage suivant". Là, il me nomme la feuille en cours en fonction de la cellule "NOM" puis me créer une nouvelle feuille "VIERGE" a partir de la "MATRICE"

Toute ces rapport qui ont été créés ne doivent en aucun cas être sauvegardé. c'est pour cela qu'il sont converti en PDF.

Par contre, la feuille "MATRICE" qui contient les noms et sites que je peux modifier c'est elle qui donne départ à tout le reste, et, si j'ajoute un nom ou un site et que je ferme sans enregistrer, vous le savez, ba je recommence la manip a la prochaine ouverture.

S'il y a d'autre moyens n'hésitez pas, je veux juste qu'il soit pris en compte que rien ne doit être sauvegarder sauf cette feuille "MATRICE", avec prise en charge des macro

J'espère que j'ai été assez explicite.

Merci

--
Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
122
bonjour,

Je pense que c'est cela que tu recherches:

http://support.microsoft.com/kb/129153/fr
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
ça y ressemble beaucoup mais peut-on l'adapter pour une feuille (rhoooo... je suis pénible avec ma feuille)

Petit code d'exemple par mes soins (en parti)

Sub Auto_Close()
If ThisWorksheets("MATRICE").Saved = False Then
ThisWorksheets("MATRICE").Save
End If
End Sub
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
héhé ça marche pas... mais je cherche... ne me donnez pas de solution.
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Donc, après quelques réflexions (bonne je l'espère) je pense que la méthode serait :

que lorsque je clique sur "Enregistrer et fermer", il me supprime tous les rapport qui ont été fait sauf la "MATRICE" dans un nouveau classeur prenant en charge les macros. Et au moment ou windows me dit "ce fichier est déja existant, voulez vous l'écraser ?" il faut répondre "oui" automatiquement...

C'est pas mal ça ?

--
Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
122
Le plus simple à ce moment là c'est de supprimer tes feuilles après l'enregistrement en pdf . Dans le bouton qui crée tes pdf tu mets la suppression de la feuille en cours. basta
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Yes, ça se tient, je cherche mon code et reviens... mais pas de solutions, il faut que je cherche... c'est mieux. Merci

--
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Donc voici un truc qui fonctionne,

Option Explicit

Sub es()
Dim ws As Worksheet
Sheets("MATRICE").Visible = True
With Application
.DisplayAlerts = False
.ScreenUpdating = False
For Each ws In Worksheets
If ws.name <> "MATRICE" Then ws.Delete
Next ws
.DisplayAlerts = True
.ScreenUpdating = True

End With
Dim Fichier As String

Fichier = Environ("USERPROFILE") & "Documents\POINTAGES\"

Application.DisplayAlerts = False
' Ta sauvegarde
ThisWorkbook.SaveAs "RapHebdo"
Application.DisplayAlerts = True
Application.Quit

End Sub


Lorsque que je clique sur le bouton "enregistrer et fermer", il me supprime toutes les feuilles SAUF la "MATRICE" et me la nomme Raphebdo. Il ne me previent même plus pour l'écraser s'il est déjà existant...

Mais un soucis reste, toujours sur une incompréhension de ma part... la destination de ce fichier...

Fichier = ....

J'ai du déconner à ce niveau car il ne me le met pas dans mon dossier "POINTAGES".

C'est déjà un début...
--
Messages postés
32460
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
347
Essayes:
Fichier = Environ("USERPROFILE") & "\Documents\POINTAGES\"
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
ça ne fonctionne pas...

Pourtant ils m'ont expliqué !!! mais y a rien à faire...grrrrr
Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
122
Vu que je connais le problème en mettant:

Fichier = Environ("USERPROFILE") & "\Documents\POINTAGES\"


cela ne sera valable que pour W7 et 8, ça ne passera pas avec XP qui est

Fichier = Environ("USERPROFILE") & "\Mes documents\POINTAGES\"

il faut que tu te serves des chemins enregistrés dans tes cellules
Messages postés
32460
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
347
Ou sinon, je pense que cela doit marcher sur tous les Windows ( A TESTER bien sur) :

Fichier = Application.DefaultFilePath & "\POINTAGES\"

Messages postés
32460
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
347
Par contre, il semble que tu aborde déjà ce point dans une autre discussion....????
http://codes-sources.commentcamarche.net/forum/affich-10014466-determiner-le-chemin-vers-mes-documents-suivant-os

Attention à ne pas ouvrir de discussions en DOUBLE. ( Merci )
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Non, celui là n'est plus d'actualité
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
cs_le pivert : j'essaye de mettre le chemin comme ceci


Fichier = ThisWorkbook.Sheets("chemin").Range("A1").Value

Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Si c'est le cas ... ne met pas la solution... dis moi juste qu'il y a des erreurs..

Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Pas d'erreur, mais uniquement si :
- existe dans ton classeur actif une feuille nommée "chemin"
- en cellule A1 de la dite feuille, on y trouve une chaîne de caractères représentant un chemin complet.
Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
122
As-tu mis

MsgBox Fichier

Le résultat te satisfait-il?

dans un précedent envoi tu as mis cela:


Dim Fichier As String

Fichier = Environ("USERPROFILE") & "Documents\POINTAGES\"

Application.DisplayAlerts = False
' Ta sauvegarde
ThisWorkbook.SaveAs "RapHebdo"
Application.DisplayAlerts = True
Application.Quit

dis-moi a quoi te sert la variable Fichier?

Il faut que tu réfléchisses un peu plus

Bon courage a demain
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Oui je me suis aperçu de mon erreur, car en faite pour qu'il sauvegarde au bon endroit (donc dans le dossier pointage), il fallait juste mettre ce classeur dans le dossier, pareil pour les autres PC...

Donc pour répondre

--dis-moi a quoi te sert la variable Fichier?

A rien.

Mais merci de ces remarques...

Bonne soirée à toi aussi
Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
122
--dis-moi a quoi te sert la variable Fichier?

A rien.


FAUX

Pour l'enregistrement d'un fichier il faut:

chemin du dossier d'enregistrement, nom du fichier et son extension. Je ne t'en dit pas plus, tu as tous les éléments pour l'enregistrement de ton classeur.
Regarde le site que je t'ai indiqué tu as toutes les données pour enregistrer des 2 manières: d'abord enregistrer ton classeur sous le nom "RapHebdo" et ensuite l'enregistrer sans les modifications. Tu as les cartes en main.
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
C'est justement ce que j'ai suivi, quand je t'es mis la réponse "rien" c'est parce que j'avais plus simple du coup, j'ai mis le classeur dans le dossier pointage et le bouton "Enregistrer et fermer" contient ce code :

Sub es()
Dim ws As Worksheet
Sheets("MATRICE").Visible = True
With Application
.DisplayAlerts = False
.ScreenUpdating = False
For Each ws In Worksheets
If ws.name <> "MATRICE" Then ws.Delete
Next ws
.DisplayAlerts = True
.ScreenUpdating = True

End With

Application.DisplayAlerts = False
' Ta sauvegarde
ThisWorkbook.SaveAs "RapHebdo"
Application.DisplayAlerts = True
Application.Quit

End Sub


Et ça fonctionne bien... mais je prend quand même note des remarques... il est vrai que réfléchir plus ne serais pas de trop...(dans mon cas), mais j'ai tendance à tout mélanger... enfin.

Pour cette partie là... c'est bon, je classe donc comme résolu.

Merci encore
Messages postés
32460
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
347

en faite pour qu'il sauvegarde au bon endroit (donc dans le dossier pointage), il fallait juste mettre ce classeur dans le dossier



--dis-moi a quoi te sert la variable Fichier?
A rien.
FAUX


En fait, si on ne précise pas le répertoire où sauvegarder, il se place dans le même répertoire que le fichier "en cours".

Maintenant, il est clair que de scpécifier un chemin est préférable... dans le cas où un utilisateur ouvrirait ce classeur directement depuis un autre emplacement..


Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
122
C'est justement cela, ce classeur crée le dossier "Pointage", mais n'est pas dans ce dossier.

merci Jordane45, je ne connaissais pas:

Application.DefaultFilePath

c'est bon à savoir
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Je suis d'accord avec vous, mais vu que quand tout sera terminé, je leur enverrais comme ceci

POINTAGES.zip

Tout sera dedans à la décompression.

cs_Le pivert : la prochaine fois que je ferais des changements à la volé je tacherais d'en faire part, ça évitera les incompréhensions...euuhh.. je crois que j'ai déjà dis ça... ;)

Merci à tous...

Petite question : vous connaissez Lotus Note ? c'est la prochaine étape donc prochaine étape = nouveau post....

Bonne journée à tous

--
Messages postés
32460
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
347
Lotus Notes ? Oui.
Mais en effet, on verra ça dans ton prochain POST. ^^
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
cool ;)

J'ai pris mon papier crayon pour ne pas poster n'importe quoi, tout ce fera étape par étape