Macro permettant de sauvegarder que quelques onglets

Macro permettant de sauvegarder que quelques onglets - Divers - Programmation

Marsh Posté le 23-08-2012 à 11:15:03    

Bonjour,
 
J'ai parcourus le forum, mais je n'ai pas trouvé de réponse à ma question...
Alors voici mon problème :
J'ai un fichier Excel, qui comporte 15 onglets, dont 6 seulement sont apparents.
Une macro est intégrée à la première feuille qui permet d'ouvrir un autre fichier excel et de rapatrier des données.
Les divers onglets se remplissent.
Je souhaiterais faire une seconde macro qui me permettrais deux choses :
  - De verrouiller la fonction "enregistrer" pour qu'aucune modification ne soit apportée, mais qui propose à la place "enregistrer sous"
  - Que lors de "l'enregistrement sous" seulement 5 onglets se sauvegardent et qu'aucune macro ne soit sauvegardée.
 
Le but étant d'avoir un nouveau fichier Excel (ou sous format pdf) qui prenne beaucoup moins de place que celui contenant les 15 onglets et la macro.
 
Merci d'avance si quelqu'un peut me proposer une réponse.

Reply

Marsh Posté le 23-08-2012 à 11:15:03   

Reply

Marsh Posté le 23-08-2012 à 14:35:58    

Le verrouillage de l'enregistrer sous doit se faire sur l'événement Open du classeur avec une boucle sur les onglets :

Code :
  1. 'A la fermeture du fichier, on verrouille les feuilles de données
  2.    For i = 1 To Worksheets.Count
  3.        Worksheets(i).Protect Contents:=True, UserInterfaceOnly:=True
  4.    Next


 
Pour l'enregistrer sous, ta macro doit :
1) ouvrir une boîte de dialogue qui va permettre de saisir le nouveau nom du fichier et son emplacement
2) créer un nouveau classeur vierge
3) déverrouiller la protection sur les onglets à copier qui a été mise en place à l'ouverture du classeur (mettre False à la place de True pour UserInterfaceOnly et Contents)
4) copier dedans le contenu des onglets que tu veux
5) enregistrer ce nouveau classeur avec le nom saisi par l'utilisateur en 1)
6) dans le classeur ayant servi de source, reverrouiller les onglets qui ont été copiés
 
Qq instructions qui te seront utiles :

Code :
  1. 'On active le fichier de référence
  2.            Workbooks(sNomFichierReference).Activate
  3.            
  4.            'On copie le contenu des feuilles de données dans le fichier de référence, au même endroit
  5.            For i = 1 To iNumFeuilles
  6.                'On définit la plage de cellules à copier pour chaque feuille
  7.                Workbooks(sNomFichierCourant).Worksheets(i).Range(sColonneMin & iLigneMin & ":" & sColonneMax & iLigneMax).Copy Destination:=Workbooks(sNomFichierReference).Worksheets(i).Range(sColonneMin & iLigneMin & ":" & sColonneMax & iLigneMax)
  8.            Next
  9.            
  10.            'La copie est terminée, on sauve et ferme le fichier de référence
  11.            Workbooks(sNomFichierReference).Save
  12.            Workbooks(sNomFichierReference).Close


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed