Macro enregistrer doc sans les formules

MARIE10000 Messages postés 14 Statut Membre -  
michel_m Messages postés 18903 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!

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. MARIE10000 Messages postés 14 Statut Membre
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. MARIE10000 Messages postés 14 Statut Membre
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK, je regarde demain à l'aube (ou presque...): je suppose que tu veux copier les graphiques ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  7. MARIE10000 Messages postés 14 Statut Membre
     
    OK, j'essaie ça dès que j'ai un peu de temps! Merci !
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      attention, une petite erreur rectifiée dans message à 09:34
      0
  8. MARIE10000 Messages postés 14 Statut Membre
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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