Macro enregistrer doc sans les formules

MARIE10000 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un fichier de reporting qui est mis à jour au jour le jour et qui donc contient un certain nombre de formules.
Je souhaite écrire une macro qui:
- enregistre automatiquement (en cliquant seulement sur un bouton) à un emplacement défini en renommant le fichier de la manière suivante: nom du fichier_mois en cours_ année en cours.
- ce fichier servira de reporting mensuelle, les données doivent donc être fixes. Lorsqu'on ouvrira plus tard le fichier de janvier on doit avoir les données de janvier (sans donc que le fichier se mette à jour)
- Les formules doivent donc être "effacées" sur le reportingmensuel mais pas sur le fichier source qui sert de fichier de suivi au jour le jour.

Je peux répondre aux questions si ce n'est pas clair...

Je vous remercie!
A voir également:

7 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
bonjour

Sans voir le fichier....

mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse

0
MARIE10000 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Voici un bout du fichier, mais j'ai du supprimer un certain nombre d'éléments par confidentialité.

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

Ce fichier comporte des liens et des formules vers un autre fichier (tableaux croisés dynamiques, graphique, formules).

Ce fichier est utilisé au jour le jour il doit donc garder les liens et les formules opérationnels.
Mais tous les mois j'aimerais garder une trace de la situation à date, c'est à dire figer les données et enregistrer une copie dans mon PC.

Ce que je veus donc c'est créer une macro avec un bouton où quand clique dessus ça me crée un "nouveau fichier" avec les données figées à date (mais sans que ça les fige dans mon fichier source)
De plus, j'aimerais que ce fichier soit rangé automatiquement à un endroit spécifique et soit renommé du type "nom du fichier_mois en cours_année en cours.

Je reste à votre dispo si cela n'est pas clair!

Merci bien !
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
Bonjour,

As tu des cellules qui indique le mois et l'année ou est le mois et l'année en cours ou est ce demandé à l'opérateur lors de la procédure ?

Le nom du fichier archive est il le nom de l'onglet que tu m'as donné ?

Michel
0
MARIE10000 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Je peux très bien ajouter le mois et l'année en cours dans 2 cases sur le fichier (jusque là je sais faire!)
Le nom du fichier sera "Reporting_mois_année"

Merci!
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
OK, je regarde demain à l'aube (ou presque...): je suppose que tu veux copier les graphiques ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
Bonjour

Ci-joint proposition

il te faut créer un sous dossier pour y ranger les copies des réunions_dpgsi...

dans la feuille le mois et l'année doivent être nommés respectivement "mois_0" et "an_0" (tu peux donc les placer où tu veux)

dans la macro, en première ligne tu adaptes le chemin du sous dossier
actuellement chez moi on a:
Const Chemin As String = "D:\téléchargés\marie_ccm" 'dossier d'archivage réunions dpgsi

une fois la macro recopiée , n'oublie d'enregistrer ton classeur de saisie au format acceptant les macros (.xlsm)

Par contre, je ne peux pas passer en "valeurs" les TCD ... apparament ca gène pas mais...

la macro de ton classeur de saisie
Const Chemin As String = "D:\téléchargés\marie_ccm" 'dossier d'archivage réunions dpgsi 

Sub creer_archive() 
     Dim Fich As String, Mois As String, Annee As String 
     Dim T_valeurs1(), T_valeurs2() 
      
     'fige le défilement de l'écran 
     Application.ScreenUpdating = False 
     'crée un nouveau classeur 
     Workbooks.Add 
     Fich = ActiveWorkbook.Name 
      
     ' copie de la feuille dans un nouveau classeur (créé à partir de l'enregistreur macro) 
    ThisWorkbook.Sheets("3. REUNION DPGSI").Activate 
    Mois = Range("mois_0") 
    Annee = Range("an_0") 
     
     
    Workbooks(Fich).Connections.Add "Exécution 20122", "", Array( _ 
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=\\Nx40-rennes\DPGSI\Budget 2012\Execution\Exécution 2012.xls;Mode=Sh" _ 
        , _ 
        "are Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=35;J" _ 
        , _ 
        "et OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database" _ 
        , _ 
        " Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=Fals" _ 
        , _ 
        "e;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserI" _ 
        , "nfo Validation=False"), Array("Marchés_DPGSI"), 3 
     
    Sheets("3. REUNION DPGSI").Copy 
    ActiveWorkbook.SaveAs Filename:=Chemin & "\reporting_" & Mois & "_" & Annee & ".xlsx", _ 
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
         
   ' recopie les valeurs des formules 
        T_valeurs1 = Range("A28:M100").Value 
        Range("A28:M100") = T_valeurs1 
        T_valeurs2 = Range("A112:M175").Value 
        Range("A112:M175") = T_valeurs2 
End Sub 


le classeur en retour
https://www.cjoint.com/?3IvjGnkUqAp
Michel
0
MARIE10000 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
OK, j'essaie ça dès que j'ai un peu de temps! Merci !
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
attention, une petite erreur rectifiée dans message à 09:34
0
MARIE10000 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Petite question pour commencer: en fait le fichier comporte normalement plusieurs onglets qui sont aussi à copier de la même manière.

Du coup, je me suis dit qu'après "Sheets("3. REUNION DPGSI").Copy" j'allais ajouter "Sheets("1. lsihygh").Copy" puis "Sheets("3. oisehf").Copy" et ainsi de suite...

C'est lors de l'exécution de la macro que ça bug, j'ai le message d'erreur suivant:
"Erreur d'exécution '9:
L'indice n'appartient pas à la sélection"

Je pense que le problème vient du fait que la sélection de l'onglet 3 comme tu l'a décrite :
" T_valeurs1 = Range("A28:M100").Value
Range("A28:M100") = T_valeurs1
T_valeurs2 = Range("A112:M175").Value
Range("A112:M175") = T_valeurs2"
n'est pas valide avec les onglets 1 et 2.

Que dois-je ajouter?

De plus, pourquoi la selection de l'onglet 3 ne prend pas en compte les lignes 101 à 111 ?

Merci beaucoup !!
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
De plus, pourquoi la selection de l'onglet 3 ne prend pas en compte les lignes 101 à 111 ?

comme je l'ai marqué + haut:
..." Par contre, je ne peux pas passer en "valeurs" les TCD ... apparemment ca gène pas mais... "...

j'ai le message d'erreur suivant: "Erreur d'exécution '9:
Et sur quelle ligne?




en fait le fichier comporte normalement plusieurs onglets qui sont aussi à copier de la même manière.
Pourquoi ne l'avoir pas dit au départ?
cela oblige à reprendre le problème, peut-^tre pour plusieurs heures de travail bénévole...Une procédure, quelque soit le langage, demande que l'information du demandeur soit complète et précise pour pouvoir analyser le pb et coder en conséquence

:-(((
0